spring取得通过配置文件和注解注入的bean、取得当前数据库连接、取得ApplicationContext的方法...

spring取得通过配置文件和注解注入的bean、取得当前数据库连接、取得ApplicationContext的方法

1、思路:

应用程序启动时使用ApplicationContextAware让Spring容器传递自己生成的ApplicationContext给我们, 然后我们把这个ApplicationContext设置成一个类的静态变量, 这样我们就随时都可以在老的代码里得到Application的对象了。

2、编写工具类: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 );    }    
}   

3、在Spring的配置文件中配置上述类后、应用程序启动时会使用ApplicationContextAware让Spring容器传递自己生成的ApplicationContext给我们, 然后我们把这个ApplicationContext设置成一个类的静态变量, 这样我们就随时都可以在老的代码里得到Application的对象了。

<bean id="SpringApplicationContext" class="com.huaxin.framework.core.util.ApplicationContextHelper"></bean>  

4、获得bean的方法、获取数据库连接的方法、获取ApplicationContext

   4.1、取得通过Spring配置文件注入的任意Bean(以取得DataSource为例)

<!-- 配置dbcp数据源 -->  
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"   init-method='init'      destroy-method="close">  <property name="driverClassName" value="${jdbc.driverClassName}" />  <property name="url" value="${jdbc.url}" />  <property name="username" value="${jdbc.username}" />  <property name="password" value="${jdbc.password}" />  <property name="minIdle" value="${jdbc.minIdle}" />        <!-- 队列中的最小等待数 -->  <property name="maxWait" value="${jdbc.maxWait}" />        <!-- 最长等待时间,单位毫秒 -->  <property name="maxActive" value="${jdbc.maxActive}" />    <!-- 最大活跃数 -->  <property name="initialSize" value="${jdbc.initialSize}" /><!--    初始大小 -->  
</bean> 
/取得数据源  
DruidDataSource dataSource = (DruidDataSource)ApplicationContextHelper.getBean("dataSource");  
Connection connection = DataSourceUtils.getConnection(dataSource);  //取得ApplicationContext  
ApplicationContext ctx = ApplicationContextHelper.getApplicationContext();  

4.2、取得通过注解方式注入的Bean(以在取得Service为例)

通过@Service("userTestService")定义bean

@Service("userTestService")  
public class UserTestServiceImpl implements UserTestService  {  @Autowired  private UserTestDao userDao;  @Transactional(propagation=Propagation.NOT_SUPPORTED)   @Override  public Map<String, Object> doGetRecordById() {  return userDao.getRecordById("1");  }  
。。。略。。。  
} 

通过以下代码获取Bean

/** * 测试Bean获取 * @throws Exception  */  
@Test  
public void testGetBean() throws Exception{  //通过注解方式  UserTestService userTestService = (UserTestService)ApplicationContextHelper.getBean("userTestService");  System.out.println(userTestService);  }  

 

转载于:https://www.cnblogs.com/pypua/articles/7516067.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/369307.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎样不通过高考进入清华计算机系,山东高考状元孟令昊澄清,没有参加政审,已经填报清华计算机系!...

原标题&#xff1a;山东高考状元孟令昊澄清&#xff0c;没有参加政审&#xff0c;已经填报清华计算机系&#xff01;说到高考状元&#xff0c;其实每年在高考分数公布以后和志愿填报的时候&#xff0c;他们都是大家最为关注的群体&#xff0c;特别是对于这些状元的去向成为了很…

DOM BOM document window 区别

DOM 是为了操作文档出现的 API&#xff0c;document 是其的一个对象&#xff1b; BOM 是为了操作浏览器出现的 API&#xff0c;window 是其的一个对象。 使用下图讲解&#xff1a; 归DOM管的&#xff1a; E区&#xff1a;即document 归BOM管的&#xff1a; A区&#xff1a;浏览…

提取Java集合的元素-Java 8方法

我们所有人都广泛使用了Collection类&#xff0c;例如List&#xff0c;Map及其派生版本。 每次使用它们时&#xff0c;我们都必须遍历它们以找到某个元素或更新这些元素&#xff0c;或者找到匹配某个条件的不同元素。 考虑如下所示的人员列表&#xff1a; List<Person> …

D2

依托 Weex 的能力&#xff0c;轻舟平台使得前端开发人员可以基于 Vue 或者 Rax&#xff08;类 React&#xff09;开发媲美原生的 App。 不需要学习各类 Native 开发语言&#xff1b;不需要搭建复杂的编译打包环境&#xff0c;轻舟提供的一站式集成开发解决方案全部帮你搞定。吴…

hibernate5--主键生成策略

1、hibernate自己维护主键的值。首先获取该表中最大主键值&#xff0c;然后加一插入。主键字段对应的属性类型可以是int、short、long以及其封装类型。在高并发或者集群的情况下不能使用。 2、identity&#xff1a;使用数据库自身自增长来维护。 <id name"id" col…

vue watch 第一次不执行_Vue 实现前进刷新,后退不刷新的效果

https://github.com/woai3c/Front-end-articles​github.com需求一&#xff1a;在一个列表页中&#xff0c;第一次进入的时候&#xff0c;请求获取数据。点击某个列表项&#xff0c;跳到详情页&#xff0c;再从详情页后退回到列表页时&#xff0c;不刷新。也就是说从其他页面进…

win8计算机安全模式,安全模式,详细教您Win8怎么进入安全模式

电脑的用途在我们的日常生活之中体现的是最为突出了&#xff0c;比方说网上购物、看电视、玩游戏、做文件什么的都用得着电脑。但是有用户遇到了Win8系统按F8无法进入安全模式怎么办&#xff1f;非也&#xff0c;非也&#xff0c;下面&#xff0c;小编给大家带来了Win8进入安全…

元素加了position:absolute则该元素的text-align:center居中失效的解决办法

position:absolute;top:50%;left:50%;-webkit-transform: translate(-50%,-50%);-moz-transform: translate(-50%,-50%);transform:translate(-50%,-50%); 当元素变为position:absolute时&#xff0c;该元素不占据文档流&#xff0c;text-align&#xff1a;center失效&#xff…

elasticsearch-6.0.1安装

elasticsearch-6.0.1安装 0. 介绍&#xff1a;ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎&#xff1b;是目前全文搜索引擎的首选。Elastic 的底层是开源库 Lucene。但是&#xff0c;没法直接用 Lucene&#xff0c;必须自己写代码…

使用GlassFish 4.0测试驱动Java API以处理JSON

编写规范并为其做出贡献是一回事。 如果您想提供宝贵的反馈意见&#xff0c;请使用它并研究真实的示例。 最新推广的GlassFish构建包含重命名为4.0&#xff0c;我认为现在是对Java处理JSON&#xff08;JSON-P&#xff09;API进行测试的好时机。 获取启用了Java EE 7的GlassFis…

查询已有链表的hashmap_原创 | 面试不再慌,看完这篇保证让你写HashMap跟玩一样...

点击上方蓝色小字&#xff0c;关注“码农小黑屋”重磅干货&#xff0c;第一时间送达今天这篇文章给大家讲讲hashmap&#xff0c;这个号称是所有Java工程师都会的数据结构。为什么说是所有Java工程师都会呢&#xff0c;因为很简单&#xff0c;他们不会这个找不到工作。几乎所有面…

华为p40手机自带计算机,华为p40pro支持PC模式吗_华为p40pro能连接至电脑模式吗

华为p40pro支持PC模式吗&#xff1f;华为p40pro能连接至电脑模式吗&#xff1f;从前几年开始&#xff0c;就有部分华为手机可以支持PC模式了。这个模式在出差的时候还是很实用的&#xff0c;可以直接将手机上的内容投屏到投影仪等大屏设备上&#xff0c;不需要带笔记本电脑&…

工欲善其事

持续补充更新中....... 工具箱汇总 娄老师的超强百宝箱 &#xff08;必看&#xff01;&#xff01;&#xff09;张老师 的总结 在博客中插入代码作业高分博客指南冲刺博客指南环境搭建 Git和Github教程Git简明指南猴子都能懂的GIT入门Coding使用方法如何使用Git和码云转载于:ht…

在Bootstrap框架中,form-control的效果

在Bootstrap框架中&#xff0c;通过定制了一个类名form-control&#xff0c;也就是说&#xff0c;如果这几个元素使用了类名“form-control”&#xff0c;将会实现一些设计上的定制效果。 1、宽度变成了100% 2、设置了一个浅灰色&#xff08;#ccc&#xff09;的边框 3、具有…

ubuntu 使用apt-get install 安装php5.6--php7

使用ppa增加源:$ sudo apt-get install python-software-properties $ sudo add-apt-repository ppa:ondrej/php $ sudo apt-get update $ sudo apt-get install -y php7.0 php7.0-mysql php7.0-curl php7.0-json php7.0-cgi然后可以查看php版本:php -v关于php5.4--php5.6版本 …

实体管理器的类型:应用程序管理的EntityManager

JPA规范定义了几种类型的EntityManagers / Persistence Context。 我们可以有&#xff1a; 扩展的和事务范围的EntityManager&#xff0c; 容器管理或应用程序管理的EntityManager。 JTA或本地资源EntityManager&#xff0c; 除了上述区别外&#xff0c;我们还可以在其中存…

的内怎么放_汽车后备箱的“四不放”原则,你知道吗?网友:怎么不早说

汽车已经开始存在在越来越多的家庭当中了&#xff0c;也正是因为这样&#xff0c;很多人会把汽车当做一个自己的家庭成员&#xff01;而在汽车的使用过程当中&#xff0c;汽车的后备箱往往是放的特别满的&#xff0c;以为这样可以备不时之需&#xff0c;但是老司机也告知大家&a…

as3 访问远程计算机,本地swf不能访问网络的解决办法

本地swf不能访问网络的解决办法作者&#xff1a;小龙博客 2011年03月21日  4条评论 分类&#xff1a;AS3 学习 flash 软件本地swf不能访问网络的解决办法&#xff1a;学习过http://www.lxlong.com/blog“)这样的代码&#xff0c;在测试影片时可以通过navigateToURL方法打开…

Compatibility Telemetry(CompatTelRunner.exe) 占用硬盘100%困扰

Compatibility Telemetry(CompatTelRunner.exe) 占用硬盘100%困扰&#xff0c;Compatibility Telemetry翻译过来就是“微软兼容性检测”的意思&#xff0c;找了半天终于找到了干掉这个兼容性检测的办法。 禁用服务 控制面板–管理工具 — 服务 — 手动&#xff08;或者禁止&…

Java基础知识学习04-自定义类、ArrayList集合

类与对象 类是一个模子&#xff0c;确定对象将会拥有的特征&#xff08;属性&#xff09;和行为&#xff08;方法&#xff09;。 类的特征&#xff1a;类是对象的类型 具有相同属性和方法的一组对象的集合 类的组成&#xff1a;属性和方法 定义一个类&#xff1a;public class …