在@Service中使用Kotlin的Spring Boot @Autowired始终为空
目前我尝试用Kotlin重写我的Java Spring Boot应用程序。 我遇到了一个问题,即在所有使用@Service
注释的类中,依赖注入都无法正常工作(所有实例均为null
)。 这里是一个例子:
@Service @Transactional open class UserServiceController @Autowired constructor(val dsl: DSLContext, val teamService: TeamService) { //dsl and teamService are null in all methods }
在Java中做同样的工作没有任何问题:
@Service @Transactional public class UserServiceController { private DSLContext dsl; private TeamService teamService; @Autowired public UserServiceController(DSLContext dsl, TeamService teamService) { this.dsl = dsl; this.teamService = teamService; }
如果我使用@Component
在Kotlin中注释组件,一切工作正常:
@Component open class UserServiceController @Autowired constructor(val dsl: DSLContext, val teamService: TeamService) { //dsl and teamService are injected properly }
谷歌提供了许多不同的Kotlin和@Autowired
,我尝试过,但都导致了相同的NullPointerException
我想知道Kotlin和Java之间的区别是什么,以及如何解决这个问题?
您使用哪种Spring Boot版本? 由于1.4 Spring Boot基于Spring Framework 4.3,因此您应该可以在不使用任何@Autowired
注释的情况下使用构造函数注入。 你尝试过吗?
它会看起来像这样,为我工作:
@Service class UserServiceController(val dsl: DSLContext, val teamService: TeamService) { // your class members }