装配Bean

Spring配置的可选方案

Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系
此时
需要告诉Spring要创建哪些bean并且如何将其装配到一起

三种主要装配机制:
在XML中进行显示配置;
在Java中进行显示配置;
隐式的bean发现机制和自动装配;

如何选择?
可以自由互相搭配
尽可能使用自动配置的机制,显示配置越少越好。当必须要显示配置bean的时候(如:有些源码不是你来维护,而当你需要为这些代码配置bean的时候),推荐使用类型安全并且比XML更加强大的JavaConfig。当想要使用便利的XML命名空间,并且在JavaConfig中没有同样的实现时,才应该使用XML。


自动化装配Bean

Spring从两个角度来实现自动化装配
组件扫描:Spring会自动发现应用上下文中所创建的bean
自动装配:Spring自动满足bean之间的依赖
组件扫描和自动装配组合在一起就能够将显示配置降低到最少

注入类到bean中
@Component 这个注解表明该类会作为组建类,并告知Spring要为这个类创建bean。相当于配置文件中的
@Named可以作为@Component注解的替代方案,两者存在细微的差异,大多数场景中,可以互相替换

组件扫描
@ComponentScan注解启用了组件扫描
通过xml文件启动组件扫描

<context:component-scan base-package="soundsystem">

自动化装配
@Autowired,简单的说就是把其他bean中的某个方法注入到当前bean中
构造器上添加此注解,表明当Spring创建CDPlayer bean的时候,会通过这个构造器来进行实例化并且会传入一个可设置给CompactDisc类型的bean
实例:通过自动装配,将一个CompactDisc注入到CDPlayer中

@Component
public class CDPlayer implements MediaPlayer{
    private CompactDisc cd;
    
    @Autowired
    public CDPlayer(CompactDisc cd){
        this.cd = cd;
    }
    
    public void play(){
        cd.play();
    }
}

@Inject:来源于Java以来规范,该规范同时还为我们定义了@Named注解,,在自动装配中,Spring同时支持@Inject和@Autowired,尽管有一些细微的差异,大多数场景中,可以相互替换


显示装配

为什么使用显示装配?
有时候自动化装配方案行不通,因此需要明确配置Spring。比如:想将第三方库中的组件装配到你的应用中, 此时,是没有办法在它的类上添加@Component和@Autowired 注解的,因此就不能使用自动化装配的方案。

两种显示装配的方案:
Java和XML

导入混合配置:
有时会同时使用自动化和显示配置
在自动装配时,并不在意要装配的bean来自哪里。
自动装配的时候会考虑到Spring容器中所有的bean,不管是在JavaConfig或xml中声明的还是通过组件扫描获取的

如何在JavaConfig中引用XML配置的bean?
如何在XML配置文件中引用JavaConfig?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值