Spring Bean的装配方式

Spring容器负责创建应用程序中的Bean,并通过依赖注入协调这些对象之间的关系。创建应用对象之间协作关系的行为通常称为装配(wiring),这也是依赖注入(Dependentcy Injection)的本质。Bean的装配方式机Bean依赖注入。

Spring容器支持多种形式的Bean装配方式,如基于XML的装配、基于注解(Annotation)的装配和自动装配。

基于XML的Bean装配

Spring提供了两种基于XML的装配方式:属性setter方法注入和构造方法注入。

在Spring实例化Bean的过程中,Spring首先会调用Bean默认的构造方法来实例化Bean对象,然后通过反射的方式调用setter方法来注入属性值。

属性setter方法注入要求Bean必须满足两点:

Bean类必须提供一个默认的构造方法。

Bean类必须为需要注入的属性提供对应的setter方法。

在Spring配置文件中,使用属性setter方法注入时,在<bean>元素的子元素<property>中为每个属性注入值;而使用构造方法注入时,在<bean>元素的子元素<constructor-arg>中定义构造方法的参数。可以使用其value属性或者子元素来设置该值的参数。

    <bean id="adminInfo" class="com.ssm.entity.AdminInfo" scope="prototype">
        <property name="id" value="5"></property>
        <constructor-arg name="name" value="admin" index="0"></constructor-arg>
        <constructor-arg name="pwd" value="123456" index="1"></constructor-arg>
    </bean>

基于Annotation的Bean装配

在Spring中尽管使用XML配置文件可以实现Bean的装配工作,但如果应用中Bean的数量较多,会导致XML配置文件过于臃肿,从而给维护与升级带来一定困难。

从JDK5开始提供了名为Annotation(注解)的功能,Spring利用这一特性,逐步完善对Annotation技术的全面支持,使XML配置文件不再臃肿,向零配置迈进。

Spring中定义了一系列的注解。如下所示:

@Component注解。是一个泛化的概念,使用此注解描述Spring中的Bean,仅仅表示一个组件(Bean),可以作用在任何层次。使用时只需要将该注解标注在相应类上即可。

@Repository注解。用于将数据访问层(DAO层)的类标识在Spring中的Bean,其功能与@Component相同。

@Service注解。通常作用 业务层(Service层),用于将业务层的类标识为Spring中的Bean,其功能与@Component相同。

@Controller注解。通常作用在控制层(如Spring MVC的Controller),用于将业务层的类标识为Spring中的Bean,其功能与@Component相同。

@AutoWired注解。用于对Bean的属性变量、属性的setter方法及构造方法进行标注,配合对应的注解处理器完成Bean的自动装配工作。@AutoWired注解器默认按照Bean类型进行装配。@AutoWired注解加上@Qualifier注解,可直接指定一个Bean实例名称来进行装配。

@Resource注解。作用相当于@AutoWired,配置对应的注解处理器完成Bean的自动配置工作。区别在于:@AutoWired默认按照Bean类型进行装配,@Resource默认按照Bean实例名称进行装配。@Resource包括name和type两个重要属性。Spring将name属性解析为按Bean实例的名称,将type属性解析为Bean实例的类型。如果指定name属性,则按照实例名称进行装配;如果指定type,则按照Bean类型进行装配。如果都不指定,则先按照Bean实例名称进行装配,如果不匹配,再按照Bean类型进行装配,如果都无法匹配,则抛出NoSudhBeanDefinitionException异常。

@Qualifier注解。与@AutoWeird注解配合,将默认按Bean类型装配修改为按Bean实例名进行装配,bean的实例名由@Qualifier注解的参数指定。

在上面几个注解中,虽然@Repository、@Service、@Controller的功能和@Component注解的功能相同,但为了使类的标注更加清晰,在实际开发中推荐使用@Repository标注数据访问层(DAO层),使用@Service标注业务逻辑层(Service层),使用@Controller标注控制层(Controller层)。

原文地址:https://www.cnblogs.com/kjitboy/p/12076303.html

时间: 2024-08-30 15:38:06

Spring Bean的装配方式的相关文章

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

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

Bean的装配方式

一.基于xml的装配 Student.java package com.yh; public class Student implements People { public void breath() { System.out.println("呼吸"); } } XML配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springf

Spring 之Bean的装配

Spring Bean的装配分为3中: 1.隐式发现和自动装配 @Component:将一个Java类声明为Bean(组件类),等待Spring扫描发现. @ComponentScan:启用组件扫描将带有@Component的类实例化为Bean,一般用在配置类上,可指定扫描基础包,默认与配置类相同的包. @Configuration:声明一个Java类是配置类,它与@Component作用相当,只是更为直观,一般@Bean与其连用. <context:component-scan base-pa

spring 自动装配 bean 有哪些方式?

Spring容器负责创建应用程序中的bean同时通过ID来协调这些对象之间的关系.作为开发人员,我们需要告诉Spring要创建哪些bean并且如何将其装配到一起. spring中bean装配有两种方式 隐式的bean发现机制和自动装配 在java代码或者XML中进行显示配置 参考链接:spring Bean装配的几种方式简单介绍 原文地址:https://www.cnblogs.com/jxxblogs/p/12147464.html

Spring框架第一篇之Bean的装配

一.默认装配方式 代码通过getBean();方式从容器中获取指定的Bean实例,容器首先会调用Bean类的无参构造器,创建空值的实例对象. 举例: 首先我在applicationContext.xml配置文件中配置了一个bean: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" x

Spring框架---IOC装配Bean

IOC装配Bean (1)Spring框架Bean实例化的方式提供了三种方式实例化Bean 构造方法实例化(默认无参数,用的最多) 静态工厂实例化 实例工厂实例化 下面先写这三种方法的applicationContext.xml配置文件: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans&

Spring bean的三种创建方式

1.创建Spring工程 使用eclipse创建一个Spring工程,一个简单的方法就是先创建一个Java工程,然后将Spring的Jar包全部放入到工程里面即可开始编写基于Spring框架的程序.Spring的Jar包可以从github上的源码中取得,下载地址是:https://github.com/spring-projects/spring-framework. 下面是在学习<Spring实战>时创建的一个Spring工程,其目录结构如下: 在Spring中,创建应用对象之间协作关系的行

spring实战之装配bean

内容参考自spring in action一书. 创建应用对象之间协作关系的行为通常称为装配,这也是依赖注入的本质. 1. 创建spring配置 spring是一个基于容器的框架.如果没有配置spring,那么它就是一个空的容器,所以需要配置spring来告诉容器它需要加载哪些Bean和如何装配这些bean,这样才能确保它们能够彼此协作. 从spring3.0开始,spring容器提供了两种配置bean的方式.第一种是传统上的使用一个或多个XML文件作为配置文件.第二种提供了基于java注解的配

Spring自动注解装配、自动检测装配Bean配合过滤组件使用

自动注解装配 当我们使用注解装配时,需要在XML文件中配置: <context:annotation-config/>那么我们就可以使用基于注解的自动装配 Spring支持几种不同的自动注解装配 [email protected] :Spring会尝试使用byType的自动装配方式 例如:  @Autowired publicPeople(Language language) { this.language =language; language.say(); } @Autowired pub