设为首页 加入收藏

TOP

Spring自定义类中@AutoWired标识的元素注入为null(二)
2019-01-02 00:08:50 】 浏览:260
Tags:Spring 定义 @AutoWired 标识 元素 注入 null
nbsp;             }else{
                    Order orderResult =  orderResultList.get(0);
                    CopierUtils.copy(request, orderResult);
                    orderResult.setUpdateTime(new Date());
                    result = orderService.updateOrder(btOrderResult);
                }
        return result;
    }
}


最开始我是这么调用的:


public void method1(Request1 request ) {
    OrderRequest<Request1> orderCreateRequest = new OrderRequest<Request1>();
    Order result = OrderCreateRequest.orderInfoSave(request);
}
 
public void method2(Request2 request ) {
    OrderRequest<Request2> orderCreateRequest = new OrderRequest<Request2>();
    Order result = OrderCreateRequest.orderInfoSave(request);
}


但是OrderRequest中orderService为null。(在controller层中注入service接口,在service层中注入orderService是有值的),尝试可很多解决办法,最后发现,原来spring自定义的类实例化时也需要用注入的方式,不能用new,否则脱离了spring的管理。改成如下方式就可以了:


@Autowired
private OrderRequest<Request1> request1;
@Autowired
private OrderRequest<Request2> request2;
 
public void method1(Request1 request ) {
    Order result = request1.orderInfoSave(request);
}
 
public void method2(Request2 request ) {
    Order result = request2.orderInfoSave(request);
}


总结:


如果在A类中的属性b有@Autowired这样的注解,则类A的实例化不能用new 操作,必须要用注入的方式,否则脱离了spring的管理;


解决方法:


调用ApplicationContextUtil.getApplicationContext().getBean("XXX", XXX.class);方法获取component


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇epoll使用详解 下一篇PHP - pcntl_fork() 执行过程详解

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目