日期:2014-05-16 浏览次数:20654 次
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 );
}
}
<bean id="SpringApplicationContext" class="com.huaxin.framework.core.util.ApplicationContextHelper"></bean>
//取得数据源 DruidDataSource dataSource = (DruidDataSource)ApplicationContextHelper.getBean("dataSource"); Connection connection = DataSourceUtils.getConnection(dataSource); //取得ApplicationContext ApplicationContext ctx = ApplicationContextHelper.getApplicationContext();