java面试题网

普通会员

483

帖子

9

回复

187

积分

楼主
发表于 2019-08-26 15:24:39 | 查看: 5068| 回复: 0

基于 XML 的 DI

基于 XML 的 DI

举例:项目 di-xml

注入分类

bean 实例在调用无参构造器创建了空值对象后,就要对 bean 对象的属性进行初始化。

初始化是由容器自动完成的,称为注入。

根据注入方式的不同,常用的有两类:设值注入、构造注入。

(1) 设值注入(掌握)

设值注入是指,通过 setter 方法传入被调用者的实例。这种注入方式简单、直观,因而 在 Spring 的依赖注入中大量使用。

举例:

基于 XML 的 DI_www.wityx.com

基于 XML 的 DI_www.wityx.com

当指定 bean 的某属性值为另一 bean 的实例时,通过 ref 指定它们间的引用关系。ref 的值必须为某 bean 的 id 值。

基于 XML 的 DI_www.wityx.com

基于 XML 的 DI_www.wityx.com

对于其它 Bean 对象的引用,除了 标签的 ref 属性外,还可以使用 标签。

基于 XML 的 DI_www.wityx.com

(2) 构造注入(理解)

构造注入是指,在构造调用者实例的同时,完成被调用者的实例化。即,使用构造器设置依赖关系。

举例:

基于 XML 的 DI_www.wityx.com

基于 XML 的 DI_www.wityx.com

标签中用于指定参数的属性有:

➢ name:指定参数名称。

➢ index:指明该参数对应着构造器的第几个参数,从 0 开始。不过,该属性不要也行,

但要注意,若参数类型相同,或之间有包含关系,则需要保证赋值顺序要与构造器中的参数顺序一致。

具有集合性质的属性注入(掌握)

举例:di03 包

基于 XML 的 DI_www.wityx.com

(1) 为数组注入值

基于 XML 的 DI_www.wityx.com

(2) 为 List 注入值

基于 XML 的 DI_www.wityx.com

(3) 为 Set 注入值

基于 XML 的 DI_www.wityx.com

(4) 为 Map 注入值

基于 XML 的 DI_www.wityx.com

(5) 为 Properties 注入值

基于 XML 的 DI_www.wityx.com

(6) 复杂集合属性的注入

MyCollections 类中增加新的属性

基于 XML 的 DI_www.wityx.com

在容器配置文件注入方式:

基于 XML 的 DI_www.wityx.com

对于引用类型属性的自动注入

对于引用类型属性的注入,也可不在配置文件中显示的注入。可以通过为 标签

设置 autowire 属性值,为引用类型属性进行隐式自动注入(默认是不自动注入引用类型属

性)。根据自动注入判断标准的不同,可以分为两种:

byName:根据名称自动注入

byType:根据类型自动注入

(1) byName 方式自动注入(理解)

当配置文件中被调用者 bean 的 id 值与代码中调用者 bean 类的属性名相同时,可使用byName 方式,让容器自动将被调用者 bean 注入给调用者 bean。容器是通过调用者的 bean 类的属性名与配置文件的被调用者 bean 的 id 进行比较而实现自动注入的。

举例:

基于 XML 的 DI_www.wityx.com

(2) byType 方式自动注入(理解)

使用 byType 方式自动注入,要求:配置文件中被调用者 bean 的 class 属性指定的类,要与代码中调用者 bean 类的某引用类型属性类型同源。即要么相同,要么有 is-a 关系(子类,或是实现类)。但这样的同源的被调用 bean 只能有一个。多于一个,容器就不知该匹配哪一个了。

举例:

基于 XML 的 DI_www.wityx.com

基于 XML 的 DI_www.wityx.com

为应用指定多个 Spring 配置文件(掌握)

在实际应用里,随着应用规模的增加,系统中 Bean 数量也大量增加,导致配置文件变得非常庞大、臃肿。为了避免这种情况的产生,提高配置文件的可读性与可维护性,可以将Spring 配置文件分解成多个配置文件。

(1) 平等关系的配置文件(掌握)

将配置文件分解为地位平等的多个配置文件,并将所有配置文件的路径定义为一个String 数组,将其作为容器初始化参数出现。其将与可变参的容器构造器匹配。

基于 XML 的 DI_www.wityx.com

各配置文件间为并列关系,不分主次。

举例:

基于 XML 的 DI_www.wityx.com

(2) 包含关系的配置文件(掌握)

各配置文件中有一个总文件,总配置文件将各其它子文件通过 引入。在 Java代码中只需要使用总配置文件对容器进行初始化即可。

举例:

基于 XML 的 DI_www.wityx.com

基于 XML 的 DI_www.wityx.com

也可使用通配符*。但,此时要求父配置文件名不能满足*所能匹配的格式,否则将出现循环递归包含。就本例而言,父配置文件不能匹配 spring-*.xml 的格式,即不能起名为 spring-total.xml。

基于 XML 的 DI_www.wityx.com

基于 XML 的 DI_www.wityx.com


文章来自www.wityx.com,转载请注明出处!原文地址http://www.wityx.com/post/1233_1_1.html


java面试题交流群:327440556

上一篇:基于注解的 DI 下一篇:Bean 的装配
您需要登录后才可以回帖 登录 | 立即注册

java面试题网www.wuliaokankan.cnjava建站系统提供技术支持V2.1 网站地图 © 2016-2018