普通java类获取spring容器bean的方法
2016-11-28 18:17
651 查看
很多时候,我们在普通的java类中需要获取spring的bean来做操作,比如,在线程中,我们需要操作数据库,直接通过spring的bean中构建的service就可以完成。无需自己写链接。。有时候有些好的东西,拿到用就好了。
这里是多种方式中的一种。
通过实现ApplicationContextAware获取bean。这里有个问题,就是,如果spring容器没有启动完成的时候,不能通过这个方法获取,因为这样,会报空指针,因为
private static ApplicationContext applicationContext;
这个还没有加载完成。好的开始贴代码。。
java类:
配置文件:
启动完成。
测试:OK
这里是多种方式中的一种。
通过实现ApplicationContextAware获取bean。这里有个问题,就是,如果spring容器没有启动完成的时候,不能通过这个方法获取,因为这样,会报空指针,因为
private static ApplicationContext applicationContext;
这个还没有加载完成。好的开始贴代码。。
java类:
package com.iafclub.demo.util; import java.util.Map; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; /**获取javabean工具类 * * @author chenweixian * */ public class ApplicationUtil implements ApplicationContextAware{ private static ApplicationContext applicationContext; //实现ApplicationContextAware接口的context注入函数, 将其存入静态变量. public void setApplicationContext(ApplicationContext applicationContext) { ApplicationUtil.applicationContext = applicationContext; } //取得存储在静态变量中的ApplicationContext. public static ApplicationContext getApplicationContext() { checkApplicationContext(); return applicationContext; } //从静态变量ApplicationContext中取得Bean, 自动转型为所赋值对象的类型. @SuppressWarnings("unchecked") public static <T> T getBean(String name) { checkApplicationContext(); if (applicationContext == null){ return null; } return (T) applicationContext.getBean(name); } //从静态变量ApplicationContext中取得Bean, 自动转型为所赋值对象的类型. //如果有多个Bean符合Class, 取出第一个. @SuppressWarnings("unchecked") public static <T> T getBean(Class<T> clazz) { checkApplicationContext(); @SuppressWarnings("rawtypes") Map beanMaps = applicationContext.getBeansOfType(clazz); if (beanMaps!=null && !beanMaps.isEmpty()) { return (T) beanMaps.values().iterator().next(); } else{ return null; } } private static void checkApplicationContext() { if (applicationContext == null) { // throw new IllegalStateException("applicaitonContext未注入,请在applicationContext.xml中定义SpringContextHolder"); } } }
配置文件:
<bean id="applicationUtil" class="com.iafclub.demo.util.ApplicationUtil" />
启动完成。
测试:OK
(RedisTemplate<String, Serializable>) ApplicationUtil.getBean("redisTemplate");
相关文章推荐
- 普通Java类获取spring 容器的bean的5种方法
- 普通Java类获取spring 容器的bean的5种方法
- 普通Java类获取spring 容器的bean的5种方法
- 普通Java类获取Spring的Bean的方法
- 普通Java类获取Spring的Bean的方法
- 普通java类获取 spring中的bean方法
- 普通Java类获取Spring的Bean的方法
- 普通java类获取 spring中的bean方法
- 获取Spring 容器中bean的方法
- 获取Spring容器中Bean实例的工具类(Java泛型方法实现)
- 获取spring容器中bean的方法
- Java代码6种方法获取spring 容器的bean
- Spring 注解中,普通类获取@Service标记的方法 或者bean对象
- 普通Java类获取Spring的bean - traceofsun的专栏 - 博客频道 - CSDN.NET
- 普通Java类获取Spring的bean
- JSP 获取spring容器中bean的两种方法总结
- 获取Spring容器中Bean实例的工具类(Java泛型方法实现)
- Spring线程获取容器中bean的方法
- Spring容器中获取bean实例的方法
- 普通Java类获取Spring的bean