问题: orderRepository = null 。
据我所知,orderRepository没有注入,因为用户不是由Spring创建的bean而只是使用 new 创建的对象,然后在dao中设置了它的属性?
我正在将用户作为活动对象,因此将存储库注入模型类。任何解决方案,或者可能有更好的方法?
@Controller
class UserController {
...
// Get user from DB
User user = userService.findUser(userId);
Order order = user.findOrder(orderId);
...
}
@Component
User {
@Autowired
OrderRepository orderRepository;
Order findOrder(long orderId) {
Order order = orderRepository
.findOrderOrThrowException(this.getId(), orderId);
return order;
}
}
@Controller
class UserController {
...
// Get user from DB
User user = userService.findUser(userId);
Order order = user.findOrder(orderId);
...
}
@Component
User {
@Autowired
OrderRepository orderRepository;
Order findOrder(long orderId) {
Order order = orderRepository
.findOrderOrThrowException(this.getId(), orderId);
return order;
}
}
答案 0 :(得分:0)
User
是由某个存储库创建的。所以你必须自己注射OrderRepository
。也许您的ORM / DB框架支持拦截器,然后您可以在注入OrderRepository
的中心位置。或者甚至让Spring使用注入的OrderRepository
创建一个空实例,框架用数据库中的值填充它。
对于不是由存储库创建的User
实例,Spring将完成这项工作。
或者你只是让orderRepository
成为静态成员,这更有意义。