美文网首页
Spring实战随笔(二)装配Bean

Spring实战随笔(二)装配Bean

作者: 面包树_A | 来源:发表于2018-05-08 15:47 被阅读0次

之前学习了Spring的核心概念,其中DI是spring最基本要素,因为在Spring中随时都在使用。DI创建了对象之间的协作关系,称之为装配,Spring中装配bean就是配置Spring容器的过程。

有三种方式配置容器:
1.隐式的bean发现机制和自动配置
2.在JAVA中显式配置
3.在XML中显式配置

根据项目需要来选择相应的配置方案。

- 自动化装配Bean

Why:方便

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

  • 组件扫描: Spring自动发现ApplicationContext中创建的bean
    @Component: Spring寻找带该注解的类,并为其创建bean,这个注解不会开启组件扫描。
    @ComponentScan: 这个注解会扫描当前类包+子包下所有带@Component注解的类创建bean,并且它会开启组件扫描。效果等同于用XML的<context:component-scan>.
    Spring自动创建的bean id默认为class名,可以自己@Component("tricker")来命名。

  • 自动装配: Spring自动满足bean之间的依赖
    @Autowired: 该注解能放在类中任一方法上,会自动装配需要的所有bean,如果找不到匹配的会自动抛出异常,如果找到多个也会抛出异常需要明确指定是哪个。

-显式配置Bean

Why: 有时候自动化配置行不通,譬如使用了第三方库,不可能在第三方库类上加注解

- 在JAVA中显式配置Bean

JavaConfig方式,通过@Configuration @Bean显式配置。

@Configuration
public class PaymentJavaConfig {

    @Bean
    public ILogger getIlogger() {
        return new ConsoleLogger();
    }

    @Bean
    public PaymentActionMixed getPaymentActionMixed(ILogger logger)     {
        return new PaymentActionMixed(logger);
    }
}
- 在XML中显式配置Bean
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context">
<!-- configuration details go here -->
  <bean class="soundsystem.SgtPeppers" />
      <!-- 构造器注入 -->
      <constructor-arg value="Sgt. Pepper's Lonely Hearts Club Band" />
  </bean>  
  <bean id="cdPlayer" class="soundsystem.CDPlayer">
      <!-- 属性注入 -->
      <property name="compactDisc" ref="compactDisc" />
  </bean>
</beans>

还有些c命名空间(c:cd-ref)、p命名空间(p:compactDisc-ref)、util命名空间<util:list>
缺点:无法校验,安全性太差,不会在编译期就检查该类是否存在(不过如果用Spring Tool Suite的话可以);而且比JAVA Config方式要麻烦很多,还需要声明XSD

- JAVA Config和XML混合使用
  • JavaConfig中引用XML声明的bean
@Configuration
// 导入通过JAVAConfig声明的bean:CDPlayerConfig
@Import(CDPlayerConfig.class)
// 导入cd-config.xml中声明的bean
@ImportResource("classpath:cd-config.xml")
public class SoundSystemConfig {
}
  • XML中引用JavaConfig声明的bean
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:c="http://www.springframework.org/schema/c"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">

  <!-- XML中声明bean -->
  <bean id="cdPlayer" class="soundsystem.CDPlayer" c:cd-ref="compactDisc" />
  <!-- 导入JAVAConfig中声明的bean -->
  <bean class="soundsystem.CDConfig" />
  <!-- 导入其他XML文件中声明的bean -->  
  <import resource="cdplayer-config.xml" />
</beans>

- Summary

尽量用自动化配置bean,避免显示配置带来的代码和维护成本。如果一定要显示,JAVAConfig优于XML。这里学习了Spring的集中装配方式,但是Spring还有更高的装配的需求,接下来继续学习Spring高级装配。

- W3CSchool参考链接

相关文章

  • Spring实战随笔(二)装配Bean

    之前学习了Spring的核心概念,其中DI是spring最基本要素,因为在Spring中随时都在使用。DI创建了对...

  • Spring装配bean的三种方式

    所有内容参考《spring 实战》,作为学习笔记使用。 spring装配bean主要有三种方式,(1) 自动装配 ...

  • Spring -- 装配Bean(Part 1/3)

    《Spring 实战》 读书笔记 第二章 Spring配置的可选方案 隐式的bean发现机制和自动装配(本章) 在...

  • Spring -- 装配Bean(Part 2 /3)

    《Spring 实战》 读书笔记 第二章 Spring配置的可选方案 隐式的bean发现机制和自动装配 在Java...

  • Spring实战(二)-装配Bean

    本文基于《Spring实战(第4版)》所写。 Spring提供了三种主要的装配机制: 在XML中进行显示配置 在J...

  • Spring实战(二)—— 装配Bean

    创建应用对象之间协作关系的行为通常称为装配,这也是依赖注入(DI)的本质。 2.1 Spring配置的可选方案 当...

  • Spring装配Bean

    spring三种方式装配bean: 自动化装配bean 借助java来进行bean装配 使用xml进行bean装配...

  • Spring 与 IoC(第二讲)

    Bean 的装配 举例:Spring_Bean_Assemble 项目。Bean 的装配,即 Bean 对象的创建...

  • 【Spring实战】装配Bean

    本章内容: 声明Bean 构造器注入和Setter方法注入 装配Bean 控制bean的创建和销毁 任何一个成功的...

  • Spring 实战——装配Bean

    装配是依赖注入的本质,作为开发人员,需要告诉Spring要创建哪些bean并且如何将它们装配在一起。即创建bean...

网友评论

      本文标题:Spring实战随笔(二)装配Bean

      本文链接:https://www.haomeiwen.com/subject/pwhwrftx.html