【发布时间】:2017-08-27 14:00:30
【问题描述】:
我在使用 spring an 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) {...}
有了这个代码就可以了!我没有错误。
我想知道有什么区别。我不明白发生了什么。谁能帮我理解一下?
【问题讨论】:
-
你在哪里访问
environment? -
在方法中做事。我把 [...] 因为它可以是任何东西。我已将 [...] 替换为 [此处使用环境变量的功能代码]。我可以是
environment.getProperty("my.property") -
好吧,看起来没问题...@Autowired 可能没有什么不同?
-
不,没有区别:/
标签: spring spring-boot kotlin