Spring学习札记之一

Spring学习笔记之一

1.BeanFactory与ApplicationContext
     BeanFactory:提供IoC服务支持,默认采用延迟初始化策略(lazy-load),容器启动初期较快
     ApplicationContext:间接继承自BeanFactory,提供其他高级特性:事件发布、国际化支持;容器启动时默认全部初始化并绑定完成。

2.Xml配置说明
   <beans> xml配置文件最顶层元素
   <description> 描述信息
   <import> 加载所依赖的配置文件
   <alias> 别名
  <bean id="" class="" name="别名,可以使用id不能使用的字符,且可以指定多个别名,逗号隔开">

3.构造方法注入xml

 

<bean id="" class="">
	<constructor-arg type="int" index="0">
		<value>1</value>
	</constructor-arg>
	<constructor-arg type="String" index="1" value="2"/>
</bean>

 

4.setter方法注入xml

    确保注入对象提供默认的构造方法

 

<bean id="" class="">
	<property name="注入对象所对应的实例变量名">
		<value>1</value>
	</property>
	<property name="注入对象所对应的实例变量名" ref="otherbean"/>
	</bean>

 5.<property>和<constructor-arg>中可用配置项

 

	value、ref、bean、idref、null、list、set、map、props
	<vale>:为主体对象注入简单的数据类型。是最底层元素,内部不能嵌套其他元素
	<ref local="beanname"/>:只能加载同一配置文件中的对象
	<ref parent="beanname"/>:只能指定位于当前容器的父容器中定义的对象引用。
	<ref bean="beanname"/>:基本通吃
	<idref bean="refbeanname"><==><value>refbeanname</value>:依赖对象的名称,不是引用.
	内部<bean>:
	<list>:对应注入对象类型为java.util.List及子类或者数组的依赖对象,可以有序地注入。
		<property name="listname">
			<list>
				<value>11</value>
				<ref bean="beanname">
				<bean class="innerbean">
			</list>
		</property>
	<set>:注入java.util.Set或者子类的依赖对象,无序。
	<map>:注入java.util.Map或者子类的依赖对象。
		<property name="valueMap">
			<map>
				<entry key="key1">
					<value></value>
				</entry>
				<entry>
					<key>key2</key>
					<ref bean="someObject"/>
				</entry>
				<entry key="key1">
					<value></value>
				</entry>
				<entry key-ref="lstkey"><!--key-ref:用于指定对象的引用作为键-->
					<list>……</list
				</entry>
				<entry key="" value-ref=""/>
			</map>
		</property>
	<props>:注入java.util.Properties的对象依赖
		<property>
			<props>
				<prop key="url">url</prop>
			</props>
		</property>
	<null/>:空元素,<value></value>:结果为"",不是Null

 

6.depends-on:容器初始化当前Bean时,会先实例化当前Bean定义所依赖的其他Bean,多个依赖关系是通过逗号隔开
	<bean id="bean1" class="" depends-on="beanA,beanB"/>
7.autowire:指定当前Bean定义采用某种类型的自动绑定模式。提供5种模式:no、byName、byType、constructor、autodetect
	no:不采用任何自动绑定模式,默认
	byName:按照类中声明的实例变量的名称,与Xml配置文件中声明的Bean定义的beanName的值进行匹配。
		public class Foo{
			private Bar barAttr;
		}
		<bean id="fooBean class="..Foo" autowire="byName"/>
		<bean id="barAttr" class="..Bar"/>
	byType:容器根据当前Bean定义类型,分析其依赖对象类型到所有bean定义中寻找与依赖类型相同的bean。若找到多个相同类型Bean,返回错误,无法自动绑定。
	constructor:针对构造方法参数自动绑定,与byType类似;而byName与byType针对property的自动绑定,
	autodetect:是byType和constructor模式的结合体,如果对象拥有默认无参数的构造方法,容器优先考虑byType模式,否则constructor模式
8.dependency-check:对其所依赖的对象进行最终检查。4种类型:
	none:不做依赖检查
	simple:对简单属性类型以及相关的collection进行检查
	object:只对对象引用类型依赖进行检查
	all:simple和object结合
9.lazy-init: 主要对ApplicationContext容器的bean初始化行为施以控制。pplicationContext容器启动时马上对singleton的bean进行实例化。