获取Spring的Bean

Posted my36z

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取Spring的Bean相关的知识,希望对你有一定的参考价值。

直接这样就可以获取bean,不会有重复生成的问题。(这里的环境是使用Spring开发RestController)

WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();
wac.getBean(beanID);

如果是下面这样,Spring配置初始化一次,执行下面代码的时候会再初始化一次,这样就会有两个dataSource,可以在Druid的监控页面上查看具体情况。

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-context-db.xml");
DruidDataSource dataSource = (DruidDataSource) applicationContext.getBean("dataSource");

解释

方法一

ClassPathXmlApplicationContext
这样的方式适用于採用Spring框架的独立应用程序,须要程序通过配置文件手工初始化Spring的情况。很多教程上都是按这个来,这个比较适合做Swing的时候用。

方法二

ApplicationContext ac1 = WebApplicationContextUtils.getRequiredWebApplicationContext(ServletContext sc); 
ApplicationContext ac2 = WebApplicationContextUtils.getWebApplicationContext(ServletContext sc); 
ac1.getBean("beanId"); 
ac2.getBean("beanId");  

说明:这样的方式适合于採用Spring框架的B/S系统,通过ServletContext对象获取ApplicationContext对象。然后在通过它获取须要的类实例。上面两个工具方式的差别是,前者在获取失败时抛出异常。后者返回null。

其他

https://www.cnblogs.com/yjbjingcha/p/6752265.html

以上是关于获取Spring的Bean的主要内容,如果未能解决你的问题,请参考以下文章

死磕 Spring----- IOC 之从单例缓存中获取单例 bean

如何获取spring 注解的bean

如何在线程中获取spring 管理的bean

Spring在代码中获取bean的几种方式(转)

如何获取容器中的bean对象

Spring在代码中获取bean的几种方式