Como usar corretamente as anotações Spring (@Autowired, @Component) em Kotlin?
Olá a todos! Comecei a estudar Kotlin recentemente e estou tentando migrar meu projeto antigo em Spring com Java para esta linguagem. Encontrei um problema: as anotações Spring, como @Autowired, não funcionam como eu estava acostumado em Java.
Em Java, eu geralmente fazia assim:
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public String getUserName(Long id) {
return userRepository.findById(id).map(User::getName).orElse("Unknown");
}
}Quando tentei escrever o mesmo em Kotlin:
@Service
class UserService {
@Autowired
private lateinit var userRepository: UserRepository
fun getUserName(id: Long): String {
return userRepository.findById(id).map { it.name }.orElse("Unknown")
}
}O compilador reclama do lateinit var (supostamente o campo deve ser nullable ou inicializado), e a aplicação cai com NullPointerException. Tentei usar