在@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 }