Spring中自动装配

自动装配

在我们了解过constructor-arg和property装配中,都需要配置相应的属性和值或者引用,如果在比较复杂的项目中,就会使得XML的配置变得复杂,自动装配可以使用较少的配置实现。主要通过使用bean的autowire属性来控制,autowire可取值:

byName:为属性自动装配id与该属性的名字相同的bean

例如:People中有一个名为dog的Dog类

<beanclass=”People” id=”p” autowire=”byName”/>

<beanid=”dog” class=”Dog”>

byType:与byName不同的是,通过类型来选择装配的属性

<beanclass=”People” id=”p” autowire=”byType”/>

< beanid=”dog1” class=”Dog”>

如果我们有多个Dog bean那么此时byType就不会装配,而是抛出异常,对于此,我们可以设置首先装配的bean,通过将Dog bean的primary属性设置为false(默认为true,都是首选bean),还可以设置autowrie-candidate为false,将该bean排除在装配外。

constructor:通过构造器装配,此时就不再需要constructor-arg装配,当我们装配一个bean时,选用constructor,那么该bean就会去寻找该构造方法中可以使用的参数,如果此时有多个的话,那么就会抛出异常。注意:此时不能使用constructor-arg

autodetect:自动装配,首先会选用constructor,如果没有,在选用byType.

如果我们需要为所有的bean选择相同的默认装配方式,可以再beans元素中,使用default-autowire属性来指定

我们通常使用手动装配和自动装配的混合模式。

时间: 2024-10-23 11:04:35

Spring中自动装配的相关文章

spring中自动装配bean

首先用@Component注解类: package soundsystem: import org.springframework.stereotype.Component; @Component public class TestBean{ …… } 开启组件扫描spring才能自动装配bean,创建一个@ComponentScan注解的类 package soundsystem: import org.springframework.context.annotation.componentS

spring中自动装配byName,byType,constructor

byName:按名称装配,根据属性的名称,在容器中寻找跟该属性名相同的bean,如果没有找到,即属性值为null. byType:byType:按类型装配,根据属性的类型,在容器中寻找跟该类型匹配的bean.如果有多个类型匹配的bean,那么将会抛出异常.如果没有找到,即属性值为null. constructor:和byName相似,因为它是去容器中寻找跟构造器函数中参数名相同的bean. byName和byType与constructor的区别是,byName和byType其实就是设值注入,找

Spring之自动装配bean

Spring之自动装配bean 最近学习Spring框架,参考资料是Spring IN ACTION----第一张内容飘过去~~ 从第二章的自动装配bean开始,不过学习Spring核心最重要的还是ioc的注入模式吧! 书上是这么说的----(概念问题,哈哈),首先普及几个概念 --------------------------------------------------------------------------------------------------------------

spring的自动装配,骚话@Autowired的底层工作原理

前言 开心一刻 十年前,我:我交女票了,比我大两岁.妈:不行!赶紧分! 八年前,我:我交女票了,个比我小两岁,外地的.妈:你就不能让我省点心? 五年前,我:我交女票了,市长的女儿.妈:别人还能看上你?分了吧! 今年,我挺着大肚子踏进家门.妈:闺女啊,你终于开窍了 ! 前情回顾 Spring拓展接口之BeanPostProcessor,我们来看看它的底层实现中讲到了spring对BeanPostProcessor的底层支持,并且知道了BeanPostProcessor的两个方法:postProce

Eureka 系列(03)Spring Cloud 自动装配原理

Eureka 系列(03)Spring Cloud 自动装配原理 [TOC] 本文主要是分析 Spring Cloud 是如何整合 Eureka 的,但不会具体分析 Eureka 的源码,之后的文章会对 Eureka 的源码做一个比较具体的分析. 1. Eureka Client 自动装配 org.springframework.boot.autoconfigure.EnableAutoConfiguration=org.springframework.cloud.netflix.eureka.

spring boot 自动装配的实现原理和骚操作,不同版本实现细节调整,debug 到裂开......

开篇说明: 注解本身并没有什么实际的功能(非要说标记也是一个“实际”的功能的话,也可以算吧),隐藏在背后的注解处理器才是实现注解机制的核心.本篇将从这两个层面出发探索 spring boot 自动装配的秘密,并使用 spring boot 的自动装配机制来实现自动装配. 本次代码已经放到 github:https://github.com/christmad/code-share/tree/master/spring-boot-config-practice 代码中主要是做了 @Configur

Spring的自动装配在session监听器失效

先看代码 package com.oa.listener; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; import org.springframework.beans.factory.annotation.Autowired; import com.oa.service.Syste

Spring中自动检测并申明bean

在Spring中申明bean,一般情况是在XML中用<bean id=""  class="">标签来指定一个类并为其取一个id.但是这样效率很低,Spring提供了自动检测并申明bean的方法,讲解如下: 一.自动检测并申明bean的步骤: 1.用<context:component-scan  base-package="com.springinaction.springidol"></context:compo

Spring -- Bean自动装配&amp;Bean之间关系&amp;Bean的作用域

Bean的自动装配 Spring IOC 容器可以自动装配 Bean. 需要做的仅仅是在 的 autowire 属性里指定自动装配的模式 有以下几种自动装配的类型: byType(根据类型自动装配): 若 IOC 容器中有多个与目标 Bean 类型一致的 Bean. 在这种情况下, Spring 将无法判定哪个 Bean 最合适该属性, 所以不能执行自动装配. byName(根据名称自动装配): 必须将目标 Bean 的名称和属性名设置的完全相同. constructor(通过构造器自动装配):