Spring装配bean的基本方式

spring框架的核心是spring容器,容器负责管理应用中的组件的生命周期,它会创建这些组件并且保证它们的依赖能够得到满足,这样的话,组件才能完成预定的任务。而在这里,最主要的也是最核心的就是依赖注入和AOP,这篇文章主要来自我阅读《spring实战》中关于Spring装配bean的总结与摘要,不足之处请指出!

Spring装配bean的基本方式

1.装配的定义:创建应用对象之间协作关系的行为通常称为装配,这也是依赖注入(DI)的本质。

2.Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系, 而bean如何进行装配,Spring具有非常大的灵活性,它提供了三种主要的装配机制:

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

1.自动化装配bean

1.Spring从两个角度来实现自动化装配bean:
组件扫描(component scanning):Spring会自动发现应用上下文中所创建的bean。
自动装配(autowiring):Spring自动满足bean之间的依赖。

2.java创建带有@Component的注解的bean类,使用@ComponentScan的注解启动组件扫描。(在这里,只是单独的创建一个普通的类并带有@ComponentScan的注解,这个注解默认情况下会扫描与配置类相同的包。)

bean类:
@Component
public class Sge{
}

注解扫描(这个是默认扫描与配置类相同的包):
@Configuration
@ComponentScan
public class CDConfig{
}

设置组件扫描的基础包(可以多个):
@Configuration
@ComponentScan(basePackages={"xxx","yyy"})
public class CDConfig{
}
@Configuration
@ComponentScan(basePackagClasses={"xxx.class","yyy.class"})
public class CDConfig{
}

或者也可以使用XML启用扫描组件:

<context:component-scan base-pacakage="xxx">

3.为bean添加注解实现自动装配:@Autowired可以用在类的任何方法上

//注解使用在构造器上
@Component
public class Sge{
    private Compact sss;

    @Autowired
    public CDs(Compact sss){
        this.sss = sss;
    }
}
//注解使用在Setter方法上
@Component
public class Sge{
    private Compact sss;

    @Autowired
    public void setCDs(Compact sss){
        this.sss = sss;
    }
}

2.Java代码装配bean

当在很多场景(将第三方库中的组件装配到你的应用中),无法在类上添加@Autowired等的注解,这时候需要使用Java显示装配才行。

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

@Configuration
public class CDConfig{
}

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

@Bean
public CompactDisc sgtPeppers(){
    return new SgtPeppers();
}
上面的bean(CompactDisc Bean)自身没有任何依赖。

@Bean
public CDPlayer cd(){
    return new CDPlayer(sgtPeppers());
}
CDPlayer Bean依赖CompactDisc Bean,是通过调用sgtPeppers()方法返回CompactDisc实例的,除此之外,也可以通过构造器或者Setter等方法实现DI(依赖注入)功能。

3.XML代码装配bean

1.声明简单的bean,在XML中,声明bean只有以下一种通过标签的方式来声明。

<bean id="aa" class="xxx"/>

2.借助构造器注入初始化bean,在XML中声明DI时,有两种基本的配置方案可供选择:
①. <constructor-arg>元素
②使用Spring3.0所引入的c-命名空间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值