springBeans 的自动装配

简介: Beans 自动装配Spring 容器可以在不使用 和 元素的情况下自动装配相互协作的 bean 之间的关系。

Beans 自动装配

Spring 容器可以在不使用 和 元素的情况下自动装配相互协作的 bean 之间的关系。

自动装配模式

模式 描述
no 这是默认的设置,它意味着没有自动装配,你应该使用显式的bean引用来连线。你不用为了连线做特殊的事。在依赖注入章节你已经看到这个了。
byName 由属性名自动装配。Spring 容器看到在 XML 配置文件中 bean 的自动装配的属性设置为 byName。然后尝试匹配,并且将它的属性与在配置文件中被定义为相同名称的 beans 的属性进行连接。
byType 由属性数据类型自动装配。Spring 容器看到在 XML 配置文件中 bean 的自动装配的属性设置为 byType。然后如果它的类型匹配配置文件中的一个确切的 bean 名称,它将尝试匹配和连接属性的类型。如果存在不止一个这样的 bean,则一个致命的异常将会被抛出。
constructor 类似于 byType,但该类型适用于构造函数参数类型。如果在容器中没有一个构造函数参数类型的 bean,则一个致命错误将会发生。
autodetect Spring首先尝试通过 constructor 使用自动装配来连接,如果它不执行,Spring 尝试通过 byType 来自动装配。

可以使用<bean>元素的 autowire 属性为一个 bean 定义指定自动装配模式。

自动装配 byName

这种模式由属性名称指定自动装配。Spring 容器看作 beans,在 XML 配置文件中 beans 的 auto-wire 属性设置为 byName。然后,它尝试将它的属性与配置文件中定义为相同名称的 beans 进行匹配和连接。如果找到匹配项,它将注入这些 beans,否则,它将抛出异常。

例如

<!--
byName:会自动在容器上下文中查找,和自己对象set方法后面的值对应的beanid!
-->
<bean id="people" class="com.demo.pojo.People" autowire="byName">
    <property name="name" value="测试"/>
</bean>

byname的时候,需要保证所有bean的id唯一,并且这个bean需要和注入的属性的set方法的值一致

Spring 自动装配 byType

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

例如

<!--
    byName:会自动在容器上下文中查找,和自己对象set方法后面的值对应的beanid!
    byType:会自动在容器上下文中查找,和自己对象属性类型相同的bean!
    -->
    <bean id="people" class=""com.demo.pojo.People" autowire="byType">
        <property name="name" value="测试"/>
    </bean>

bytype的时候,需要保证所有bean的class唯一,并且这个bean需要和注入的属性的类型一致

Spring 由构造函数自动装配

这种模式与 byType 非常相似,但它应用于构造器参数。Spring 容器看作 beans,在 XML 配置文件中 beans 的 autowire 属性设置为 constructor。然后,它尝试把它的构造函数的参数与配置文件中 beans 名称中的一个进行匹配和连线。如果找到匹配项,它会注入这些 bean,否则,它会抛出异常。

配置注解的支持: context:annotation-config/

  • @Autowired通过byType的方式实现,而且必须要求这个对象存在!
  • @Resource默认通过byname的方式实现,如果找不到名字,则通过byType实现!如果两个都找不到的情况下,就报错!
  • 执行顺序不同:@Autowired通过byType的方式实现 @Resource默认通过byname的方式实现


相关文章
|
XML 数据格式 容器
基于注解的自动装配~
基于注解的自动装配~
|
6月前
|
Java Spring 容器
Spring依赖注入方式,自动装配及自动装配特征
Spring依赖注入方式,自动装配及自动装配特征
50 1
|
XML Java 数据格式
spring中bean的自动装配(详细)
spring中bean的自动装配(详细)
833 0
|
容器
05 依赖注入-自动装配
用于引用类型的依赖注入
77 0
|
XML Java 测试技术
Bean的自动装配
- 自动装配Spring满足bean依赖一种方式! - Spring会在上下文中自动寻找,并自动给Bean装配属性
|
XML 开发框架 Java
Spring | Bean自动装配详解
Bean自动装配详解
597 0
Spring | Bean自动装配详解
|
Java Spring
Spring Bean自动装配
1.通过ID自动装配 Spring Bean自动装配可以自动搜索beans.xml中的bean,进行自动装配,这样就可以使开发人员不必显示的声明它 例如,Person.java中包含了猫和狗的实体类对象
119 0
|
Java API 容器
什么是自动装配
什么是自动装配
|
Java 开发者 Spring
_bean 的自动装配| 学习笔记
快速学习 _bean 的自动装配
|
Java Spring
Spring框架学习(四) 自动装配
Spring框架学习(四) 自动装配
128 0