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();
[java][spring]Spring通过ApplicationContextAware获得bean的方法、获取数据库连接的方法、获取ApplicationContext