我们一般在使用@Autowired时,都是在Spring Ioc容器管理的Bean中,有时我们需要在非Ioc管理的类中使用Ioc管理的Bean。通过@Autowired自动注入会报空指针错误的异常。之前遇到这个问题在网上找了很久,找到一个方法,但测试后发现还是有问题,也可能是我自己写的有问题。
今天介绍一种极简单的方式:
获取当前Ioc容器,直接从Ioc容器中获取Bean。
第一步:
WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext();
获取到了当前的WebApplicationContext,
第二部:
private Service service = context.getBean(Service.class);
通过Bean全类名或Bean的id获取Bean实例即可。