1)构造器注入
1)构造器参数解析
2)构造器参数类型匹配
3)构造参数索引
2) Setter注入
3)一个替代构造器的方法,采用static工厂方法返回对象实例
2. 依赖配置详解
1)直接变量(基本类型、
Strings
类型等。)2)
idref
元素,提供错误验证功能。local。。。3) 引用其它的bean(协作者)。ref bean, ref local。
4)内部bean,内部bean中的
scope
标记及id
或name
属性将被忽略。内部bean总是匿名的且它们总是prototype模式的。同时将内部bean注入到包含该内部bean之外的bean是不可能的。5)集合。
、
、
及
元素。6)集合的合并。parent-style和child-style。父子集合元素合并后的值就是子集合中的最终结果,而且子集合中的元素值将覆盖父集全中对应的值。merge 属性。
7)强类型集合(仅适用于Java5+)。
8)
Nulls。
。
9)
XML配置文件的简写及其他1)XML-based configuration metadata shortcuts
2) 使用p名称空间配置属性。p 表示属性。。。
10)组合属性名称。属性的属性的属性。。。
3. 使用
depends-on。
依赖关系不是太直接。。。 多个时候 “ , ”4.延迟初始化bean。bean -
lazy-init。beans -
default-lazy-init。
5.自动装配(autowire)协作者。自动装配(autowire)。
1)Autowiring modes:no,byName,byType,constructor,autodetect。
2)如果直接使用
property
和constructor-arg
注入依赖的话,那么将总是
覆盖自动装配。3)优点:a.自动装配能显著减少配置的数量,b.自动装配可以使配置与java代码同步更新
4) 缺点:a.装配不明确可能出现难以预料的结果,对象之间的关联关系也不再能清晰的进行文档化,b.对于那些根据Spring配置文件生成文档的工具来说,自动装配将会使这些工具没法生成依赖信息。
5) 将bean排除在自动装配之外.
a.bean中autowire-candidate
属性可被设为false.b.
在
元素的'default-autowire-candidates'
属性中进行设置
6.
依赖检查.1)在bean定义中为
dependency-check
属性2)依赖检查方式:none,simple,object,all.
7.方法注入
1)放弃控制反转。通过实现
BeanFactoryAware
接口让bean A能够感知bean 容器,并且在需要的时候通过使用getBean("B")
方式向容器请求一个新的bean B实例。耦合高,不推荐。2)Lookup方法注入。
Lookup方法注入利用了容器的覆盖受容器管理的bean方法的能力,从而返回指定名字的bean实例。 Lookup方法注入适用于原型bean。Lookup方法注入的内部机制是Spring利用了CGLIB库在运行时生成二进制代码功能,通过动态创建Lookup方法bean的子类而达到复写Lookup方法的目的。(需要CGLIB支持,子类化的类不能是
final
的,要覆盖的方法也不能是final
的,不能是序列化的(serialized)。)3)自定义方法的替代方案。当使用基于XML配置元数据文件时,可以在bean定义中使用
replaced-method
元素来达到用另一个方法来取代已有方法的目的.在
元素内可包含一个或多个
元素
没有评论:
发表评论