Spring&kotlin:构造函数和lateinit注入有什么区别?
我的应用程序使用spring kotlin时遇到了问题。 一开始我有一个控制器和一个这样的服务:
这是服务:
@Service class StuffService { @Inject lateinit var environment : Environment fun doStuff() = [HERE FUNCTION CODE USING environment VARIABLE] }
这里是控制器:
@RestController class StuffController { @Inject lateinit var stuffService : StuffService @RequestMapping("/doStuff") fun doStuff() = stuffService.doStuff() }
不幸的是,当我启动springboot时,这给了我这个错误:
kotlin.UninitializedPropertyAccessException: lateinit property environment has not been initialized
所以我试图通过构造函数注入:
@Service class StuffService(val environment : Environment) {...} @RestController class StuffController(val stuffService: StuffService) {...}
随着代码的工作! 我没有错误。
我不知道有什么区别。 我不明白发生了什么事。 任何人都可以帮助我理解?
- 如何在Spek测试中使用依赖注入
- java.lang.NoSuchMethodException:com … Employee。<init>()
- Kotlin – Mockito不能模拟/间谍(Spring REST API)
- Kotlin测试失败从命令行与ClassNotFoundException但从IntelliJ工作
- spring.config.location不能在spring引导2.0.0 M6上工作
- 如何使用Spring Boot和Spring WebFlux的“功能bean定义Kotlin DSL”?
- 春季启动休息api:如何支持json和表单urlencoded请求?
- 如何用Spring WebFlux返回404