Obecnie próbuję przepisać moją aplikację Java Spring Boot Application z Kotlinem. Napotkano problem polegający na tym, że we wszystkich moich klasach opatrzonych przypisami @Service
zastrzyk zależności nie działa poprawnie (wszystkie wystąpienia to null
). Oto przykład:Spring Boot @Aktowijowany z Kotlin w @Service jest zawsze pusty null
@Service
@Transactional
open class UserServiceController @Autowired constructor(val dsl: DSLContext, val teamService: TeamService) {
//dsl and teamService are null in all methods
}
robi to samo w Java działa bez żadnych problemów:
@Service
@Transactional
public class UserServiceController
{
private DSLContext dsl;
private TeamService teamService;
@Autowired
public UserServiceController(DSLContext dsl,
TeamService teamService)
{
this.dsl = dsl;
this.teamService = teamService;
}
Gdybym opisywanie komponent z @Component
w Kotlin wszystko działa poprawnie:
@Component
open class UserServiceController @Autowired constructor(val dsl: DSLContext, val teamService: TeamService) {
//dsl and teamService are injected properly
}
Google dostarczyłem wiele różnych podejść dla Kotlin i @Autowired
, których próbowałem, ale wszystkie skutkowały tym samym NullPointerException
Chciałbym wiedzieć, jaka jest różnica między Kotlin a Javą i jak mogę to naprawić?
Czy próbowałeś zmienić val na var? –
Możliwy duplikat [Wyjątek zerowego wskaźnika w klasie Proxy wiosny i Kotlin] (http://stackoverflow.com/questions/37431817/null-pointer-exception-in-spring-proxy-class-and-kotlin) – miensol
Tak, już jestem wypróbowałem oba. – Deutro