目前,我尝试重写与科特林我的Java春天启动的应用。我遇到了一个问题,在我所有的类被标注为@Service
依赖注入工作不正常的(所有实例都null
)。这里有一个例子:春季启动@Autowired与科特林在@Service总是空
@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
注释组件正常工作:
@Component
open class UserServiceController @Autowired constructor(val dsl: DSLContext, val teamService: TeamService) {
//dsl and teamService are injected properly
}
谷歌提供了许多不同的方法对科特林和@Autowired
,我试过,但都导致同一NullPointerException
我想知道Kotlin和Java有什么区别,以及我如何解决这个问题?
您是否尝试将val更改为var? –
的可能的复制[空指针异常在Spring代理类和科特林](http://stackoverflow.com/questions/37431817/null-pointer-exception-in-spring-proxy-class-and-kotlin) – miensol
是的,我已经两个都试过。 – Deutro