因此,在我决定最好有一个Service类来完成所有逻辑工作之前,我的应用程序没有任何问题。当我复制最初使用的完全相同的代码时,我得到NullPointer错误。
这就是我所拥有的,并且效果很好:
User user = userRepository.findById(id).get();
这是我在Service班上所拥有的:
public User findUserById(Integer id)
{
User user = userRepository.findById(id).get();
return user;
}
这就是我所说的:
private UserService userService = new UserService();
User user = userService.findUserById(id);
答案 0 :(得分:1)
如果您要呼叫new UserService()
,则它不是Spring bean,也不会自动连接。
有多种方法create a Spring bean:
@Service
注释您的课程,并确保它是应用程序组件扫描的一部分。另外,请确保存储库字段用@Autowired
注释,或者确保您的服务类具有一个接受存储库作为参数的构造函数。 @Service
public class UserService {
@Autowired
private UserRepository userRepository;
}
@Configuration
注释的类,然后添加一个@Bean
方法来返回服务的新实例: @Configuration
public class UserServiceConfig {
@Bean
public UserService userService(UserRepository userRepository) {
return new UserService(userRepository); // could also use a setter instead
}
}