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 的属性进行连接。

扫描二维码关注公众号,回复: 9600683 查看本文章

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