获取Spring容器中Bean实例的工具类(Java泛型方法实现)
2013-11-27 16:48
816 查看
在使用Spring做IoC容器的时候,有的类不方便直接注入bean,需要手动获得一个类型的bean。
因此,实现一个获得bean实例的工具类,就很有必要。
以前,写了一个根据bean的名称和类型获取bean实例的2个工具方法,发现每次调用后,都需要强制转换成目标结果类型。
这样很不方便,突然想到可以使用Java泛型方法,实现1个新的工具方法,避免了类型转换。
好处:避免强制转换,比较方便,可读性更好。调用次数越多,节省的开发时间也越多。
相关阅读:提高生产力
http://blog.csdn.net/fansunion/article/category/1572687
原文链接:http://FansUnion.cn/articles/3313(小雷网-FansUnion.cn)
因此,实现一个获得bean实例的工具类,就很有必要。
以前,写了一个根据bean的名称和类型获取bean实例的2个工具方法,发现每次调用后,都需要强制转换成目标结果类型。
这样很不方便,突然想到可以使用Java泛型方法,实现1个新的工具方法,避免了类型转换。
import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.BeanFactoryAware; import org.springframework.stereotype.Service; import org.springframework.web.context.ContextLoader; import org.springframework.web.context.WebApplicationContext; import cn.fansunion.webdemo.domain.User; /** * 获取Spring容器中Bean实例的工具类(Java泛型方法实现)。 * * @author leiwen@FansUnion.cn */ @Service public class SpringBeanUtils implements BeanFactoryAware { private static BeanFactory beanFactory; /** * 注入BeanFactory实例 */ @Override public void setBeanFactory(BeanFactory beanFactory) throws BeansException { SpringBeanUtils.beanFactory = beanFactory; } /** * 根据bean的名称获取相应类型的对象 * * @param beanName * bean的名称 * @return Object类型的对象 */ public static Object getBean(String beanName) { return beanFactory.getBean(beanName); } /** * 根据bean的类型获取相应类型的对象,没有使用泛型,获得结果后,需要强制转换为相应的类型 * * @param clazz * bean的类型,没有使用泛型 * @return Object类型的对象 */ public static Object getBean(Class clazz) { WebApplicationContext wac = ContextLoader .getCurrentWebApplicationContext(); Object bean = wac.getBean(clazz); return bean; } /** * 根据bean的名称获取相应类型的对象,使用泛型,获得结果后,不需要强制转换为相应的类型 * * @param clazz * bean的类型,使用泛型 * @return T类型的对象 */ public static <T> T getBean2(Class<T> clazz) { WebApplicationContext wac = ContextLoader .getCurrentWebApplicationContext(); T bean = wac.getBean(clazz); return bean; } // 用法演示 public static void main() { // 需要强制转换,不够便捷 Class o1 = (Class) SpringBeanUtils.getBean2(Class.class); // 需要强制转换,不够便捷 User user = (User) SpringBeanUtils.getBean("user"); // 不用强制转换--推荐使用 User user2 = SpringBeanUtils.getBean2(User.class); } }
好处:避免强制转换,比较方便,可读性更好。调用次数越多,节省的开发时间也越多。
相关阅读:提高生产力
http://blog.csdn.net/fansunion/article/category/1572687
原文链接:http://FansUnion.cn/articles/3313(小雷网-FansUnion.cn)
相关文章推荐
- 获取Spring容器中Bean实例的工具类(Java泛型方法实现)
- 获取Spring容器中Bean实例的工具类(Java泛型方法实现)
- 获取Spring容器中Bean实例的工具类(Java泛型方法实现)
- 获取Spring容器中Bean实例的工具类(Java泛型方法实现)
- Spring容器中获取bean实例的方法
- 创建Bean的三种方式 在大多数情况下,Spring容器直接通过new关键字调用构造器来创建Bean实例,而class属性指定Bean实例的实现类,但这不是实例化Bean的唯一方法。实际上,Sprin
- Struts 2在Action中获取Spring容器中所有Bean实例名称的方法
- Spring 一、 之Bean容器初始化以及bean实例的获取
- Spring容器实例Bean的三种方法(IOC三种方法)
- 在listener或者工具中使用spring容器中的bean实例
- Spring 获取 实现某接口的所有实例bean
- Spring线程获取容器中bean的方法
- Spring通过实现getBean方法获得Bean的实例
- 普通Java类获取spring 容器的bean的5种方法
- Spring中通过工厂方法获取bean实例
- 获取Spring IOC容器代理的Bean实例的几种方式
- 获取Spring 容器中bean的方法
- Spring中通过实现FactoryBean接口获取bean实例
- 普通Java类获取spring 容器的bean的5种方法
- 从spring容器中得到bean_使用类构造器实例化_使用静态工厂方法实例化_使用实例工厂方法实例化_例子