通過實現ApplicationContextAware介面動態獲取bean
阿新 • • 發佈:2019-02-03
有些場景下我們需要在程式碼中需要動態獲取其它bean,這裡介紹一種簡單實現方式。
實現ApplicationContextAware介面
package org.ricky.spring;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
/**
* 獲取spring容器,以訪問容器中定義的其他bean
*/
public class SpringContextUtil implements ApplicationContextAware {
// Spring應用上下文環境
private static ApplicationContext applicationContext;
/**
* 實現ApplicationContextAware介面的回撥方法,設定上下文環境
*/
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
SpringContextUtil.applicationContext = applicationContext;
}
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
/**
* 獲取物件 這裡重寫了bean方法,起主要作用
*
* @param name
* @return Object
* @throws BeansException
*/
public static Object getBean(String beanId) throws BeansException {
return applicationContext.getBean(beanId);
}
}
Bean配置
在spring-config.xml中配置,如下:
<bean id="springContextUtil" class="org.ricky.spring.SpringContextUtil"/>
使用方法
JdbcTemplate partitionJdbcTemplate = (JdbcTemplate) SpringContextUtil.getBean("cbmJdbcTemplate");