Spring通過ApplicationContextAware獲得bean的方法、獲取數據庫連接的方法、獲取ApplicationContext
1、思路:
應用程序啓動時使用ApplicationContextAware讓Spring容器傳遞自己生成的ApplicationContext給我們, 然後我們把這個ApplicationContext設置成一個類的靜態變量, 這樣我們就隨時都可以在老的代碼裏得到Application的對象了。
1、編寫工具類:ApplicationContextHelper
/**
* 版權所有:華信軟件
* 項目名稱:ACWS框架
* 創建者: Wangdf
* 創建日期: 2014-4-2
* 文件說明: Spring工具欄
*/
package com.huaxin.framework.core.util;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
/**
* Spring工具欄
* @author wangdf
*/
public class ApplicationContextHelper implements ApplicationContextAware {
private static ApplicationContext appCtx;
/**
* 此方法可以把ApplicationContext對象inject到當前類中作爲一個靜態成員變量。
* @param applicationContext ApplicationContext 對象.
* @throws BeansException
* @author wangdf
*/
@Override
public void setApplicationContext( ApplicationContext applicationContext ) throws BeansException {
appCtx = applicationContext;
}
/**
* 獲取ApplicationContext
* @return
* @author wangdf
*/
public static ApplicationContext getApplicationContext(){
return appCtx;
}
/**
* 這是一個便利的方法,幫助我們快速得到一個BEAN
* @param beanName bean的名字
* @return 返回一個bean對象
* @author wangdf
*/
public static Object getBean( String beanName ) {
return appCtx.getBean( beanName );
}
}
2、在Spring的配置文件中配置上述類後、應用程序啓動時會使用ApplicationContextAware讓Spring容器傳遞自己生成的ApplicationContext給我們,
然後我們把這個ApplicationContext設置成一個類的靜態變量, 這樣我們就隨時都可以在老的代碼裏得到Application的對象了。
<bean id="SpringApplicationContext" class="com.huaxin.framework.core.util.ApplicationContextHelper"></bean>3、獲得bean的方法、獲取數據庫連接的方法、獲取ApplicationContext
//取得數據源 DruidDataSource dataSource = (DruidDataSource)ApplicationContextHelper.getBean("dataSource"); Connection connection = DataSourceUtils.getConnection(dataSource); //取得ApplicationContext ApplicationContext ctx = ApplicationContextHelper.getApplicationContext();