Spring通過ApplicationContextAware獲得bean的方法、獲取數據庫連接的方法、獲取Appl...

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();
發佈了25 篇原創文章 · 獲贊 15 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章