0

问题: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;
    }
}

4

1 回答 1

0

User我猜是由某个存储库创建的。所以你必须自己注射OrderRepository。也许您的 ORM / DB 框架支持拦截器,那么您可以有一个中心位置来注入OrderRepository. 或者甚至让 Spring 创建一个注入的空实例,OrderRepository然后框架用数据库中的值填充它。

对于User那些不是由存储库创建的实例,Spring 会完成这项工作。

或者你只是制作orderRepository一个静态成员,这更有意义。

于 2013-03-17T20:09:02.003 回答