Spring获取ApplicationContext的工具类的几种方式
(推荐)利用ApplicationContextAware
当一个类实现了ApplicationContextAware接口之后,通过此类可以直接获取spring配置文件中所有由Spring容器管理的bean对象。
实现了这个接口之后,也要放到spring容器里面,否则无法使用
1 | @Component("springApplicationContext") |
1 | //或者使用@Configuration,其本质仍然是@Component |
1 | // 调用 |
手动创建ApplicationContext对象
1 | public class ApplicationContextUtil { |
其他方式
其他方式1
在web环境中通过spring提供的工具类获取,需要ServletContext对象作为参数。然后才通过ApplicationContext对象获取bean。下面两个工具方式的区别是,前者在获取失败时返回null,后者抛出异常。另外,由于spring是容器的对象放在ServletContext中的,所以可以直接在ServletContext取出 WebApplicationContext 对象。
1 | ApplicationContext context1 = WebApplicationContextUtils.getWebApplicationContext(ServletContext sc); |
其他方式2
工具类继承抽象类ApplicationObjectSupport,并在工具类上使用@Component交由spring管理。这样spring容器在启动的时候,会通过父类ApplicationObjectSupport中的setApplicationContext()方法将ApplicationContext对象设置进去。可以通过getApplicationContext()得到ApplicationContext对象。
其他方式3
工具类继承抽象类WebApplicationObjectSupport,查看源码可知WebApplicationObjectSupport是继承了ApplicationObjectSupport,所以获取ApplicationContext对象的方式和上面一样,也是使用getApplicationContext()方法。
更多方式参考https://blog.csdn.net/lzx_longyou/article/details/56853570