Spring Beans自动装配

1.1 Spring 自动装配‘ByName’

  在配置文件中我们配置Bean文件,如果Bean的属性设置了autowire=“ByName”表示自动装备。即表示Spring容器会查找该Bean配置的属性(对应的Pojo类的属性)并设置这个属性的值为对应的Bean。通俗来讲就是,实体类中有属性想获得而不想在Bean内的重新写属性配置。看图你就明白了

 图一(使用Setter方法内部注入)

图二(使用autowire自动装配byName)

1.2Spring 自动装配‘ByType’

这种模式由属性类型指定自动装配。Spring 容器看作 beans,在 XML 配置文件中 beans 的 autowire 属性设置为 byType。然后,如果它的 type 恰好与配置文件中 beans 名称(id)中的一个相匹配,它将尝试匹配和连接它的属性。如果找到匹配项,它将注入这些 beans,否则,它将抛出异常。看图

图一(Pojo中的属性类型)

图二(使用autowire自动装配byType)

2.1Spring 自动装配constructor。这种模式与 byType 非常相似,但它应用于构造器参数。(不多介绍)

模式名称

描述

No

默认的设置,它意味着没有自动装配

byName

由属性名自动装配。Spring 容器看到在 XML 配置文件中 bean 的自动装配的属性设置为 byName。然后尝试匹配,并且将它的属性与在配置文件中被定义为相同名称的 beans 的属性进行连接。

byType

由属性数据类型自动装配。Spring 容器看到在 XML 配置文件中 bean 的自动装配的属性设置为 byType。然后如果它的类型匹配配置文件中的一个确切的 bean 名称,它将尝试匹配和连接属性的类型。如果存在不止一个这样的 bean,则一个致命的异常将会被抛出。

Constructor

类似于 byType,但该类型适用于构造函数参数类型。如果在容器中没有一个构造函数参数类型的 bean,则一个致命错误将会发生。

autodetect

Spring首先尝试通过 constructor 使用自动装配来连接,如果它不执行,Spring 尝试通过 byType 来自动装配。

总结:Spring 容器可以在不使用<property> 元素的情况下自动装配相互协作的 bean 之间的关系,这有助于减少编写一个大的基于 Spring 的应用程序的 XML 配置的数量。

猜你喜欢

转载自www.cnblogs.com/ysource/p/12421142.html