Derzeit versuche ich meine Java Spring Boot-Anwendung mit Kotlin umschreiben. Ich habe ein Problem festgestellt, dass in allen meinen Klassen, die mit @Service
annotiert sind, die Abhängigkeitsinjektion nicht korrekt funktioniert (alle Instanzen sind null
). Hier ein Beispiel:Spring Boot @Autowired mit Kotlin in @Service ist immer Null
@Service
@Transactional
open class UserServiceController @Autowired constructor(val dsl: DSLContext, val teamService: TeamService) {
//dsl and teamService are null in all methods
}
das gleiche in Java tun funktioniert ohne Probleme:
@Service
@Transactional
public class UserServiceController
{
private DSLContext dsl;
private TeamService teamService;
@Autowired
public UserServiceController(DSLContext dsl,
TeamService teamService)
{
this.dsl = dsl;
this.teamService = teamService;
}
Wenn ich die Komponente mit @Component
in Kotlin alles mit Anmerkungen versehen funktioniert:
@Component
open class UserServiceController @Autowired constructor(val dsl: DSLContext, val teamService: TeamService) {
//dsl and teamService are injected properly
}
Google zur Verfügung gestellt viele verschiedene Ansätze für Kotlin und @Autowired
, die ich versuchte, aber alle in der gleichen NullPointerException
Ich würde gerne wissen, was der Unterschied zwischen Kotlin und Java ist und wie ich das beheben kann?
Haben Sie versucht, val auf var zu ändern? –
Mögliches Duplikat von [Null Pointer Ausnahme im Frühjahr Proxy-Klasse und Kotlin] (http://stackoverflow.com/questions/37431817/null-pointer-exception-in-spring-proxy-class-and-kotlin) – miensol
Ja, ich schon versuchte beides. – Deutro