资讯专栏INFORMATION COLUMN

Spring - 装配Bean

CNZPH / 737人阅读

摘要:装配任何一个成功的应用都是由多个为了实现某个业务目标而相互协作的组件构成的创建应用对象之间协作关系的行为通常称为装配,这也是依赖注入配置的可选方案在中进行显示配置在中进行显示配置隐式的发现机制和自动装配自动化装配组件扫描会自动发现应用上下文

装配Bean

任何一个成功的应用都是由多个为了实现某个业务目标而相互协作的组件构成的

创建应用对象之间协作关系的行为通常称为装配(wiring),这也是依赖注入(DI)

Spring配置的可选方案

在XML中进行显示配置

在Java中进行显示配置

隐式的bean发现机制和自动装配

自动化装配bean

组件扫描(component scanning):Spring会自动发现应用上下文中所创建的bean

自动装配(autowiring):Spring自动满足bean之间的依赖

设置组件扫描的基础包

@ComponentScan:默认扫描当前所在的包

@ComponentScan("soundsystem"):表明你所设置的是基础包

@ComponentScan(basePackages="soundsystem")/@ComponentScan(basePackages={"soundsystem", "video"}):更清晰表明设置的基础包

@ComponentScan(basePackageClasses={CDPlayer.class, DVDPlayer.class}):扫描这些类所在的包

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

/**
 * 自动扫描当前包下的@Component
 * 也可以启用 XML 
 */
@Configuration
@ComponentScan
public class CDPlayerConfig {

    /**
     * 随机选择一个CompactDisc来播放
     * 这个例子可以看出@Bean的强大功能
     * 
     * 还可以指定名称
     */
    @Bean(name="randomDisc")
    public CompactDisc randomBeatlesCD(){
        int choice = (int) Math.floor(Math.random() * 4);
        if(choice == 0){
            return new SgtPeppers();
        } else if(choice == 1) {
            return null;
        } else if(choice == 2) {
            return null;
        } else {
            return null;
        }
        
    }
    
}
通过Java代码装配bean

显示配置,JavaConfig是更好的方案,因为它更为强大、类型安全并且对重构友好

构造器和Setter方法只是@Bean方法的两个简单样例

通过XML装配bean

需要在配置文件的顶部声明多个XML模式(XSD)文件,这些文件定义了配置Spring的XML元素

创建和管理Spring XML配置文件一种简便方式:https://spring.io/tools/sts STS>File>New>Spring Bean Configuration File

声明bean的方式:使用元素指定class属性

借助构造器注入初始化bean:元素和使用Spring3.0所引入的c-命名空间

c:cd-ref="compactDisc": c(命名空间前缀) cd(构造器参数名) ref(注入bean引用) compactDisc(要注入的bean的ID)

强依赖使用构造器注入,可选依赖使用属性注入

导入和混合配置

自动化和显示配置不是互斥的

@Import注解可以导入JavaConfig到另一个JavaConifg中,或者在更高级类中把多个JavaConfig组合在一起

@ImposrtResource注解,可以装配xml到JavaConfig中

XML导入另一个XML

bean可以在XML中导入JavaConfig

组件扫描 或@Componenet

装配bean:自动化配置、基于Java的显示配置以及基于XML的显示配置

引用:《Spring In Action 4》第2章

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/71161.html

相关文章

  • Spring核心 装配Bean

    摘要:它的构造器上添加了注解,这表明当创建的时候,会通过这个构造器来进行实例化并且会传入一个可设置给类型的通过自动装配,将一个注入到之中注解不仅能够用在构造器上,还能用在属性的方法上。 Spring配置的可选方案 Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系。当描述bean如何进行装配时,Spring具有非常大的灵活性,它提供了三种主要的装配机制: 在XM...

    wanglu1209 评论0 收藏0
  • Spring总结(一)

    摘要:如果这个类的方法有修饰,就成为第二种的装配方式代码生成要自动装配的类要保留默认构造函数,需要装配的属性使用来装配。显示装配分为两种,一种是代码装配,一种是装配。和相比,上面这种形式的中的是调用默认构造函数生成的。 Bean的自动装配 通过@ComponentScan扫描发现将要装配到ApplicationContext中的Bean。@ComponentScan中如果没有写包名,那么默...

    OpenDigg 评论0 收藏0
  • Spring详解3.Bean装配

    摘要:的依赖关系,根据依赖关系配置完成之间的装配。的行为信息,如生命周期范围及生命周期各过程的回调函数。使用该种装配模式时,优先匹配参数最多的构造函数。如果提供了默认的构造函数,则采用否则采用进行自动装配。 点击进入我的博客 1 Spring容器与Bean配置信息 Bean配置信息 Bean配置信息是Bean的元数据信息,它由一下4个方面组成: Bean的实现类 Bean的属性信息,如数...

    endiat 评论0 收藏0
  • Spring - 高级装配

    摘要:高级装配条件化的自动装配与歧义性的作用域表达式语言环境与可以为不同的环境提供不同的数据库配置加密算法等注解可以在类级别和方法级别,没有指定的始终都会被创建的方式配置不同环境所需要的数据库配置会搭建一个嵌入式的数据库模式定义在测试数据通过加 高级装配 Spring profile 条件化的bean 自动装配与歧义性 bean的作用域 Spring表达式语言 环境与profile p...

    binta 评论0 收藏0
  • 慕课网_《Spring入门篇》学习总结

    摘要:入门篇学习总结时间年月日星期三说明本文部分内容均来自慕课网。主要的功能是日志记录,性能统计,安全控制,事务处理,异常处理等等。 《Spring入门篇》学习总结 时间:2017年1月18日星期三说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学示例源码:https://github.com/zccodere/s...个人学习源码:https://git...

    Ververica 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<