第2章 装配bean

Spring 容器负责创建应用程序中的 bean 并通过 DI 来协调这些对象之间的关系。但是,作为开发人员,你需要告诉 Spring 要创建哪些 bean 并且如何将其装配在一起。当描述 bean 如何进行装配时, Spring 具有非常大的灵活性,它提供了三种主要的装配机制:

  • 在 XML 中进行显式配置。
  • 在 Java 中进行显式配置。
  • 隐式的 bean 发现机制和自动装配。

2.1 自动化装配bean

Spring 从两个角度来实现自动化装配:

  • 组件扫描( component scanning ): Spring 会自动发现应用上下文中所创建的 bean 。
  • 自动装配( autowiring ): Spring 自动满足 bean 之间的依赖。

给相应的类加上@Component注解

在实现类上加入@Component注解,这个注解相当于一个标记,告诉spring需要创建这个类的实例并管理起来。

@Component
public class UserImpl implements User{

}

在spring配置类中启用自动扫描@ComponentScan

@Configuration
@ComponentScan
public class Config{

}

::: tip 注意

如果没有其他配置的话, @ComponentScan 默认会扫描与配置类相同的包。Spring也会扫描这个包以及这个包下的所有子包,查找带有 @Component 注解的类。如果你更倾向于使用 XML 来启用组件扫描的话,那么可以使用 Spring context 命名空间的 <context:component-scan> 元素。

:::

我们可以手动的设置要扫描的包@ComponentScan(basePackages="包名"),如果我们要扫描多个包@ComponentScan(basePackages={"包名",...,"包名"})。当让以上方式是通过字符串形式,还有一种方式采用basePackageClasses进行配置,例如@ComponentScan(basePackageClasses=User.class)@ComponentScan(basePackageClasses={User.class}),我个人比较喜欢第二种方式。

使用spring管理的bean,使用@Autowired注解

使用Autowired注解,spring会把前面管理生成的实例,自动赋值到你声明的属性上。

@Service
public class UserServiceImpl implements UserService{
    @Autowired
    private User user;
}

::: tip 注意

@Autowired 注解不仅能够用在构造器上,还能用在属性的 Setter 方法上。实际上, Setter 方法并没有什么特殊之处。 @Autowired 注解可以用在类的任何方法上。

:::

2.2 通过java代码装配bean

创建配置类

创建 JavaConfig 类的关键在于为其添加 @Configuration 注解, @Configuration 注解表明这个类是一个配置类,该类应该包含在 Spring 应用上下文中如何创建 bean 的细节。

@Configuration
public class SpringConfig{

}

::: tip 注意

我们可以同时使用组件扫描和显式配置

:::

声明简单的Bean

@Bean注解会告诉 Spring 这个方法将会返回一个对象,该对象要注册为 Spring 应用上下文中的 bean 。

@Bean
public CompactDisc sgtPeppers(){
    return new SgtPeppers();
}

::: tip 注意

默认情况下, bean 的 ID 与带有 @Bean 注解的方法名是一样的。在本例中, bean 的名字将会是 sgtPeppers 。如果你想为其设置成一个不同的名字的话,那么可以重命名该方法,也可以通过 name 属性指定一个不同的名字:@Bean(name="sgtPeppers")。如果一个接口有一个实例,则bean的id可能作用不是太明显,不重复即可,但是如果有多个实例,就需要手动指定注入的bean是哪个了。

:::

借助JavaConfig实现注入

@Bean
public CDPlayer cdPlayer(){
    return new CDPlayer(sgtPeppers());
}

::: tip 注意

看起来, CompactDisc 是通过调用 sgtPeppers() 得到的,但情况并非完全如此。因为 sgtPeppers() 方法上添加了 @Bean 注解, Spring将会拦截所有对它的调用,并确保直接返回该方法所创建的 bean ,而不是每次都对其进行实际的调用。

:::

2.3 通过XML装配bean

这里介绍xml就采用相对简单的思路介绍了,建议xml如果要手动编辑的话,就直接上spring文章中复制吧,或者借助于sts之类的工具,这样确保不会出错是不。

声明bean

<bean class="soundsystem.SgtPeppers"/>

本来想写的,想了想还是看文档吧,这里就不整理了,只是稍微提一下思路。

2.4 导入和混合配置

在JavaConfig中引用XML配置

JavaConfig引用其它JavaConfig

@Configuration
@Import(CDConfig.class)
public class Config{}

JavaConfig引用xml配置文件

@Configuration
@ImportResource("classpath:cd-config.xml")
public class Config{}

在XML配置中引用JavaConfig

在XML中引用JavaConfig

<bean class="config.CDConfig"/>

在XML中引用XML

<import resource="cdplayer-config.xml"/>

原文地址:https://www.cnblogs.com/xzcode/p/9287248.html

时间: 2024-10-11 04:56:19

第2章 装配bean的相关文章

Spring 实战-第二章-装配Bean

Bean是Spring对象的声明(装配wiring),要使用Spring,必须先装配需要使用的对象,有3种装配的方式 自动化装配Bean 通过Java代码装配 通过XML装配 自动化装配Bean 自动化装配Bean很简单 1.声明接口 package soundsystem; public interface CompactDisc { void play(); } 2.添加注解 package soundsystem; import org.springframework.stereotype

SpringInAction读书笔记--第2章装配Bean

实现一个业务需要多个组件相互协作,创建组件之间关联关系的传统方法通常会导致结构复杂的代码,这些代码很难被复用和单元测试.在Spring中,对象不需要自己寻找或创建与其所关联的其它对象,Spring容器负责把需要相互协作的对象引用赋予各个对象.创建对象之间协作关系的行为称为装配,这也是依赖注入的本质.Spring为装配bean提供了三种主要的装配机制. 1.自动化装配bean Spring从两个角度来实现自动化装配: 组件扫描:Spring会自动发现应用上下文中所创建的bean 自动装配:Spri

第2章—装配Bean—通过XML装配Bean

通过XML装配Bean ? 尽管我们在生成Bean的过程中可以用到很多方法,但我们依然需要Spring的XML配置来完善更多的需求,下面就来介绍下XML装配Bean的过程是怎样的. 3.1创建XML配置规范 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=&quo

第2章 装配Bean

目录 第2章 装配Bean 2.1 Spring配置的可选方案 2.2 自动化装配bean 2.2.1 创建可被发现的bean 2.2.2 为组件扫描的bean命名 2.2.3 设置组件扫描的基础包 2.2.4 通过为bean添加注解实现自动装配 2.3 通过Java代码装配bean 2.3.1 创建配置类 2.3.2 声明简单的bean 2.3.3 借助JavaConfig实现注入 2.4 通过XML装配bean 2.4.1 创建XML配置规范 2.4.2 声明一个简单的bean 2.4.3

《spring实战》学习笔记-第二章:装配bean

2.1 Spring配置的可选方案 当描述bean如何进行装配时,Spring具有非常大的灵活性,它提供了三种主要的装配机制: (1)在XML中进行显式配置. (2)在Java中进行显式配置. (3)隐式的bean发现机制和自动装配. 建议是尽可能地使用自动配置的机制.显式配置越少越好.当你必须要显式配置bean的时候(比如,有些源码不是由你来维护的,而当你需要为这些代码配置bean的时候),我推荐使用类型安全并且比XML更加强大的JavaConfig.最后,只有当你想要使用便利的XML命名空间

spring实战第二章小记-装配bean

时间:2020/02/06 一.思想 1.创建应用对象之间协作关系的行为通常称为装配,这也是依赖注入(DI)的本质. 对于上面这句话的个人理解:当我们在new一个对象时如果传入了别的对象作为参数(这个对象可能是引用数据类型也可能是基本数据类型),这时两个对象之间就形成了一种依赖关系,由于这种依赖关系的存在,两个对象之间就是一种强耦合的关系,而通过依赖注入可以降低两个对象之间的耦合度,注意,不是消除,如果两个对象之间没有耦合关系,那两个对象就是完全没有关系的. 2.spring框架提供了三种主要的

Spring实战3:装配bean的进阶知识

主要内容: Environments and profiles Conditional bean declaration 处理自动装配的歧义 bean的作用域 The Spring Expression Language 在装配bean—依赖注入的本质一文中,我们探讨了Spring的三种管理bean的方式:自动装配.基于JavaConfig.基于XML文件.这篇文字将探讨一些Spring中关于bean的管理的高级知识,这些技能你可能不会每天都用,但是非常重要. 3.1 Environments

Spring之自动装配bean

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

Spring框架装配Bean的三种方式

欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系.本系列教程希望您能站在上帝的角度去观察(了解)Java体系.使Java的各种后端技术在你心中模块化:让你在工作中能将Java各个技术了然于心:能够即插即用.本章我们来一起了解Spring专栏-SpringBean装配. 本章我们一起来探讨SpringBean的装配,所谓 "装配" 就是值将Bean安装Bean容器中