1. 程式人生 > >通過實現ApplicationContextAware介面動態獲取bean

通過實現ApplicationContextAware介面動態獲取bean

有些場景下我們需要在程式碼中需要動態獲取其它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");