Spring容器高级主题
2016-11-02 10:32
155 查看
1.ResourceLodaer从Spring配置文件中加载Spring配置信息,并 使用Resource表示这个配置文件的资源。
BeanDefinitionReader读取Resource所指向的配置文件的资源,然后解析该配置文件。配置文件的每个<bean>元素被解析成一个BeanDefinition对象,并保存到BeanDefinitionRegistry中。
容器扫描BeanDefinitionRegistry中的BeanDefinition,并对其进行加工处理。
Spring容器取出加工好的BeanDefinition并调用InstantionStrategy着手进行Bean的实例化工作。
在实例化Bean时,BeanWrapper对Bean进行封装,并完成属性的设置工作。
BeanDefinition
BeanDefinition是配置文件中<bean>在Spring容器中的内部表示。
Spring将<bean>转换成BeanDefinition的表示,并将这些BeanDefinition注册到BeanDefinitionRegistry中。
InstantionStrategy
InstantionStrategy负责根据BeanDefinition的对象创造一个Bean的实例,相当于执行java中new的操作,但不会参与Bean属性的设置工作。
该策略通常利用Bean实现类的默认构造函数,带参数的构造函数或者工厂方法进行Bean的实例化操作。
BeanWrapper
BeanWrapper相当于一个代理器,Spring通过BeanWrapper完成Bean属性的填充。
BeanWrapper的实现类BeanWrapperImp具有三重身份:
(1)Bean包裹器
(2)属性访问器
(3)属性编辑注册表
属性编辑器:
用于将Bean在配置文件中的字面值类型转换成相应的内部类型。
任何实现java.beans.PropertyEditor接口都是属性编辑器。
使用外部属性文件
Spring提供了一个PropertyPlaceholderConfigurer,它能够使Bean在配置时引用外部属性文件。
在 外部属性文件中,属性名与属性值成对出现。
如:userName=zk; userId=0902140408;
//引用外部属性文件
<beanclass="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
P:location="外部属性文件的位置"
P:fileEncoding="utf-8">
//通过属性名引用属性值
<beanid="" class="zk.com.Class"
P:name="${userName}"
P:id="${userId}"/>
使用<context:property-placeholder>引用属性文件
如:<context:property-placeholder location=“文件所在位置”/>
基于注解或者java类配置中引用外部属性
在xml文件中引用外部属性文件之后,可以使用@Value()引用属性。
如:
@Value("${userId}")
Private String id;
在属性文件内部,属性之间可以相互引用。
BeanDefinitionReader读取Resource所指向的配置文件的资源,然后解析该配置文件。配置文件的每个<bean>元素被解析成一个BeanDefinition对象,并保存到BeanDefinitionRegistry中。
容器扫描BeanDefinitionRegistry中的BeanDefinition,并对其进行加工处理。
Spring容器取出加工好的BeanDefinition并调用InstantionStrategy着手进行Bean的实例化工作。
在实例化Bean时,BeanWrapper对Bean进行封装,并完成属性的设置工作。
BeanDefinition
BeanDefinition是配置文件中<bean>在Spring容器中的内部表示。
Spring将<bean>转换成BeanDefinition的表示,并将这些BeanDefinition注册到BeanDefinitionRegistry中。
InstantionStrategy
InstantionStrategy负责根据BeanDefinition的对象创造一个Bean的实例,相当于执行java中new的操作,但不会参与Bean属性的设置工作。
该策略通常利用Bean实现类的默认构造函数,带参数的构造函数或者工厂方法进行Bean的实例化操作。
BeanWrapper
BeanWrapper相当于一个代理器,Spring通过BeanWrapper完成Bean属性的填充。
BeanWrapper的实现类BeanWrapperImp具有三重身份:
(1)Bean包裹器
(2)属性访问器
(3)属性编辑注册表
属性编辑器:
用于将Bean在配置文件中的字面值类型转换成相应的内部类型。
任何实现java.beans.PropertyEditor接口都是属性编辑器。
使用外部属性文件
Spring提供了一个PropertyPlaceholderConfigurer,它能够使Bean在配置时引用外部属性文件。
在 外部属性文件中,属性名与属性值成对出现。
如:userName=zk; userId=0902140408;
//引用外部属性文件
<beanclass="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
P:location="外部属性文件的位置"
P:fileEncoding="utf-8">
//通过属性名引用属性值
<beanid="" class="zk.com.Class"
P:name="${userName}"
P:id="${userId}"/>
使用<context:property-placeholder>引用属性文件
如:<context:property-placeholder location=“文件所在位置”/>
基于注解或者java类配置中引用外部属性
在xml文件中引用外部属性文件之后,可以使用@Value()引用属性。
如:
@Value("${userId}")
Private String id;
在属性文件内部,属性之间可以相互引用。
相关文章推荐
- Spring3.0读书笔记----(五)Spring容器高级主题
- Spring3.X学习笔记4-Spring容器高级主题
- Spring4学习:Spring容器高级主题
- 学习《spring 3.x企业应用开发实战》之Spring容器高级主题
- Spring容器高级主题
- spring3.x第五章 Spring容器高级主题
- Spring容器高级主题(精通Spring+4.x++企业应用开发实战 五)
- DWR高级主题之DWR与spring集成(不使用springMVC,不使用注解的实例)
- DWR高级主题之DWR与spring集成
- 精通Spring 4.x企业应用开发实战——高级主题(六)
- spring学习笔记:ioc容器高级特性
- 4.spring容器高级主题
- DWR高级主题之DWR与spring集成(不使用springMVC,但使用注解的实例)
- Spring源码学习IOC(6):IoC容器的高级特性
- spring技术内幕6-IoC容器的高级特性
- Spring:源码解读(IOC容器的高级特性)
- DWR高级主题之DWR与spring集成(使用springMVC,并使用注解的实例)
- DWR高级主题之DWR与spring集成(使用springMVC,非注解的实例)
- Spring源码解读5——IoC容器的高级特性
- Spring源码解析:高级容器的扩展内幕