1.<beans> 的一些属性:
(1)default - lazy - init :其值可以为true或者false,默认为false 用来标志是否为所有的bean进行延迟初始化。
延迟初始化:ApplicationContext实现的默认行为就是在启动时将所有singleton bean提前进行实例化。提前实例化意味着作为初始化过程的一部分,ApplicationContext实例会创建并配置所有的singleton bean。通常情况下这是件好事,因为这样在配置中的任何错误就会即刻被发现(否则的话可能要花几个小时甚至几天)。有时候这种默认处理可能并不是你想要的。如果你不想让一个singleton bean在ApplicationContext实现在初始化时被提前实例化,那么可以将bean设置为延迟实例化。一个延迟初始化bean将告诉IoC 容器是在启动时还是在第一次被用到时实例化)
在XML配置文件中,实现Spring Bean延迟初始化的2种方法:
1.为一个Bean设置lazy-init="true"属性
<bean id="lazy" class="com.jdsu.MyBean" lazy-init="true"/>
2.为所有Bean设置default-lazy-init="true"属性
<beans default-lazy-init="true">...</beans>
上述XML设置能够实现Spring Bean的延迟初始化,前提条件Spring Bean是未被非延迟初始化的Spring Bean所依赖;否则仍然会在ApplicationContext初始化完成后立刻实例化。
(2)default - autowire :可以取值为no、byName、byType、constructor以及autodetect。默认值为no
byName:通过名称进行自动匹配;
byType:根据类型进行自动匹配;
constructor:和byType 类似,只不过它是根据构造方法注入而言的,根据类型,自动注入;
autodetect:是byType 和constructor模式的结合体
(3)default - dependency - check :对所依赖的对象做最终检查,
none不做依赖检查
simple对简单属性类型做检查
object只对对象引用类型的做检查
all是simple和object的结合
??????????待续
2.<bean>的name属性,命名比较灵活,可以用一些id不能使用的字符如/ ,:
3.Spring xml方式注入依赖
(1)使用构造器注入
要写相应的构造方法
<!--构造器注入--> <constructor-arg ref="Pa"/> <constructor-arg value="aodi"/> 还可以增加type属性以指定注入特定的参数
(2)使用setter方法注入
要为相应的属性写get 和set方法和默认(无参数)构造方法
<!--setter注入--> <property name="name" value="aodi"/> <property name="insurance" ref="Pa"/>
4.定义<bean>的parent属性来实现继承
<bean id ="demo" parent ="demo.parent">
5.两种bean的Scope
(1).singleton
<bean i="demo" class=".." singleton="true">
指示该对象在一个容器中只能有一个实例
(2).prototype
<bean i="demo" class=".." scope=“prototype”>
容器在接收到改类型对象的请求后,都会生成一个新的对象实例给对方。