首页 > 代码库 > 通过实现ApplicationContextAware接口动态获取bean
通过实现ApplicationContextAware接口动态获取bean
转载自:http://penghuaiyi.iteye.com/blog/2042296
场景:
在代码中需要动态获取spring管理的bean
代码:
SpringContextUtils.java
package com.winner.utils;import org.springframework.beans.BeansException;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;import org.springframework.stereotype.Component;/** * Spring的工具类,用来获得配置文件中的bean */@Componentpublic class SpringContextUtils implements ApplicationContextAware { private static ApplicationContext applicationContext; /** * 当继承了ApplicationContextAware类之后,那么程序在调用 getBean(String)的时候会自动调用该方法, * 不用自己操作 */ @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { SpringContextUtils.applicationContext = applicationContext; } /*** * 根据一个bean的id获取配置文件中相应的bean */ public static Object getBean(String beanId) throws BeansException { if (applicationContext.containsBean(beanId)) { applicationContext.getBean(beanId); } return null; } /*** * 根据一个bean的类型获取配置文件中相应的bean */ public static <T> T getBeanByClass(Class<T> requiredType) throws BeansException { return applicationContext.getBean(requiredType); } /** * 如果BeanFactory包含一个与所给名称匹配的bean定义,则返回true */ public static boolean containsBean(String name) { return applicationContext.containsBean(name); } public static ApplicationContext getApplicationContext() { return SpringContextUtils.applicationContext; }}
这几个注解所在的包是
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.2.5.RELEASE</version></dependency>
SpringContextUtils必须放在Spring容器中
要么在xml配置文件中声明,要么加上注解
通过实现ApplicationContextAware接口动态获取bean
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。