Spring学习(八)-Spring容器

Ioc的流水线

  • 1、ResourceLoader从存储介质中加载Spring的配置信息,并使用了Resource表示这个配置文件的资源。
  • BeanDefinitionReader读取Resource所指向的配置文件资源,然后解析配置文件。配置文件中的每一个<bean>解析成一个BeanDefinition对象,并保存在BeanDefinitionRegistry中。
  • 容器扫描BeanDefinitionRegistry中的BeanDefinition,使用JAVA反射机制自动识别Bean工厂后处理器(实现BeanFactoryPostProcessor接口)的Bean,然后调用这些Bean工厂后处理器对BeanDefinitionRegistry中的BeanDefinition进行加工处理。主要完成以下工作:
    1)对使用到占位符的<bean>元素标签进行解析,获得最终的配置值,这对于半成品的BeanDefinition对象进行加工处理并得到成品的BeanDefinition对象。
    2)对BeanDefinitionRegistry中的BeanDefinition进行扫描,通过Java反射机制找出所有属性编辑器的Bean(实现java.beans.PropertyEditor接口的Bean),并自动将它们注册到Spring容器的属性编辑器注册表中(PropertyEditorRegistry)。
  • Spring容器从BeanDefinitionRegistry中取出加工后的BeanDefinition,并调用InstantiationStrategy着手进行Bean实例化的工作。
  • 在实例化Bean时,Spring容器使用BeanWrapper对Bean进行封装,BeanWrapper提供了很多以JAVA反射机制操作Bean的方法,它将结合该Bean的BeanDefinition以及容器中属性编辑器,完成Bean的属性设置。
  • 利用容器中注册的Bean后处理器(实现BeanPostProcessor接口的Bean)对已经完成属性设置工作的Bean进行后续加工,直接装配出一个准备就绪的Bean。

使用外部属性文件


驱动器类名,JDBC的URL地址以及数据库用户名和密码都是直接写在XML文件中,部署人员在部署应用时,必须找到这个Bean定义所在的XML文件,找出数据源Bean定义的代码段进行调整,给部署工作带来了很大的困难。
根据实际应用,可以将这些需要调整的配置信息抽取到一个配置文件来。这里定义一个jdbc.properties的配置文件:

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/数据库名
userName=xxx
passwor=xxx

属性文件可以定义多个属性,每个属性都由一个属性名和一个属性值组成,两者用=号隔开,下面通过PropertyPlaceholderConfigurer引入jdbc.properties属性文件,更改数据源Bean的配置:

//引用jdbc.properties属性文件
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
	p:location="classpath:xxx/xxxx/xxx/jdbc.properties"
	p:fileEncoding="utf-8"/>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
	destroy-method="close"
	p:driverClassName="${driverClassName}"
	p:url="${url}"
	p:username="${userName}"
	p:password="${password}"/>

这样在部署应用时,我们只需要关注jdbc.properties这个配置文件就好了,无须关心Spring的配置文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值