如何在 Kotlin 中正确使用 Spring 注解(@Autowired, @Component)?
大家好!我刚开始学习 Kotlin,并尝试将我的旧 Spring 项目从 Java 迁移到这门语言。遇到了一个问题:Spring 注解(如 @Autowired)不像我在 Java 中习惯的那样工作。
在 Java 中,我通常这样做:
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public String getUserName(Long id) {
return userRepository.findById(id).map(User::getName).orElse("Unknown");
}
}
当我尝试用 Kotlin 写同样的代码时:
@Service
class UserService {
@Autowired
private lateinit var userRepository: UserRepository
fun getUserName(id: Long): String {
return userRepository.findById(id).map { it.name }.orElse("Unknown")
}
}
编译器对 lateinit var 报错(声称字段必须是 nullable 或已初始化),并且应用程序抛出 NullPointerException。