Spring中自动装配的方式有哪些?

简介: Spring中自动装配的方式有哪些?

1 什么是Spring内部的bean?


当一个bean仅被用作另一个bean的属性时,它能被声明为一个内部bean,为了定义inner bean,在Spring的基于XML的 配置元数据中,可以在或元素内使用元素,内部bean通常是匿名的,它们的Scope一般是prototype。


2 什么是bean装配?


bean装配是指在Spring容器中把bean组装到一起,前提是容器需要知道bean的依赖关系,如何通过依赖注入来把它们装配到一起。


3 什么是bean的自动装配?


Spring容器能够自动装配相互合作的bean,这意味着容器不需要和配置,能通过Bean工厂自动处理bean之间的协作。


4 不同方式的自动装配


在Spring中,支持五种自动装配模式,可以用来指导Spring容器用自动装配方式来进行依赖注入。


(1)no

这是Spring框架的默认设置,在该设置下自动装配是关闭的,开发者需要自行在bean定义中用标签明确的设置依赖关系。

<!-- no – 缺省情况下,自动配置是通过“ref”属性手动设定 -->

<bean id="person" class="org.spring.autowring.Person">

 <property name="ability" ref="ability"></property>

</bean>

<bean id="ability" class="org.spring.autowring.Ability">

 <property name="skill" value="Java Programming"></property>

</bean>

(2)byName

  • 根据Bean的名字进行自动装配。当向一个bean中自动装配一个属性时,容器将根据bean的名称自动在在配置文件中查询一个匹配的bean。如果找到的话,就装配这个属性,如果没找到的话就报错。
  • <!-- Auto-Wiring "byName" 按属性名称自动装配 -->

<bean id="person" class="org.spring.autowring.Person" autowire="byName"/>

   <bean id="ability" class="org.spring.autowring.Ability">

       <property name="skill" value="Java Programming"></property>

  </bean>

(3)byType

  • 根据Bean的类型进行自动装配。当向一个bean中自动装配一个属性时,容器将根据bean的类型自动在在配置文件中查询一个匹配的bean。如果找到的话,就装配这个属性,如果没找到的话就报错。
  • <!-- Auto-Wiring "byType" 按属性名称自动装配 -->

   <bean id="person" class="org.spring.autowring.Person" autowire="byType"/>

   <bean id="ability" class="org.spring.autowring.Ability">

       <property name="skill" value="Java Programming"></property>

   </bean>

(4)constructor

  • 类似于byType,不过是应用于构造器的参数,如果正好有一个Bean与构造器的参数类型相同则可以自动装配,否则会导致错误。
  • <!-- constructor – 在构造函数参数的byType方式。 -->

   <!-- 构造方法的参数 -->

   <bean id="person" class="org.spring.autowring.Person">

       <constructor-arg>

           <ref bean="ability"></ref>

       </constructor-arg>

   </bean>

   <bean id="ability" class="org.spring.autowring.Ability">

       <property name="skill" value="Java Programming"></property>

   </bean>

5 自动装配有哪些局限性?


重写


你仍需用 < constructor-arg > 和 < property > 配置来定义依赖,意味着总要重写自动装配。

基本数据类型


你不能自动装配简单的属性,如基本数据类型,String字符串和类。

模糊特性


自动装配不如显式装配精确,如果有可能,建议使用显式装配。



相关文章
|
11月前
|
Java Spring 容器
【Spring的自动装配】
【Spring的自动装配】
|
XML Java 应用服务中间件
【Spring】IOC从演变到自动装配的全攻略详解(二)
【Spring】IOC从演变到自动装配的全攻略详解(二)
45 0
|
11月前
|
Java Spring 容器
【Spring Boot自动装配】
【Spring Boot自动装配】
|
3月前
|
XML druid Java
Spring5系列学习文章分享---第二篇(IOC的bean管理factory+Bean作用域与生命周期+自动装配+基于注解管理+外部属性管理之druid)
Spring5系列学习文章分享---第二篇(IOC的bean管理factory+Bean作用域与生命周期+自动装配+基于注解管理+外部属性管理之druid)
45 0
|
1月前
|
XML Java 数据格式
Spring5入门到实战------6、IOC容器-Bean管理XML方式(自动装配)
这篇文章是Spring5框架的入门教程,详细讲解了IOC容器中Bean的自动装配机制,包括手动装配、`byName`和`byType`两种自动装配方式,并通过XML配置文件和Java代码示例展示了如何在Spring中实现自动装配。
Spring5入门到实战------6、IOC容器-Bean管理XML方式(自动装配)
|
2月前
|
开发框架 Java 开发者
Spring Boot中的自动装配原理
Spring Boot中的自动装配原理
|
3月前
|
Java 应用服务中间件 Spring
解析Spring Boot自动装配的原理与机制
解析Spring Boot自动装配的原理与机制
78 4
|
2月前
|
Java 开发者 Spring
自动装配在Spring框架中的原理与实现方式
自动装配在Spring框架中的原理与实现方式
|
3月前
|
开发框架 Java 开发者
Spring Boot中的自动装配原理
Spring Boot中的自动装配原理
|
4月前
|
Java Spring 容器
Spring依赖注入方式,自动装配及自动装配特征
Spring依赖注入方式,自动装配及自动装配特征
35 1