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进行实例化。