Spring. 通过Java代码装配bean

尽管在很多情况下通过组件扫描和自动装配来实现 Spring 的自动化配置是更为推荐的方式,但有时候自动化配置的方案行不通,因此需要明确配置 Spring。比如说你想要将第三方库中的组件装配到你的应用中,在这种情况下,是没办法在它的类上添加 @Component 和 @Autowired 注解的,因此就不能使用自动化装配的方案了。

1.创建配置类

@Configuration
public class CDPlayerConfig{

}

创建 JavaConfig 的关键在于为其添加 @Configuration 注解,此外,该类应该包含在 Spring 应用上下文中创建 bean 的细节。


2.声明简单的bean

要在 JavaConfig 中声明 bean,我们需要编写一个方法,这个方法会创建所需类型的实例,然后给这个方法添加 @Bean 注解,下面的代码声明了 CompactDisc bean:

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

@Bean 注解会告诉 Spring 这个方法会返回一个对象,该对象需要注册为 Spring 应用上下文中的 bean,方法体中包含了最终产生 bean 实例的逻辑。

默认情况下,bean 的 ID 与 带有 @Bean 注解的方法名是一样的。如果你想为其设置一个不同的名字的话,你可以重命名该方法,或者通过 name 属性指定一个不同的名字。如下:

@Bean(name="lonelyHeartsClubBand")
public CompactDisc sgtPeppers(){
    return new SgtPeppers();
}

3.借助JavaConfig注入

由于JavaConfig 中直接包含了创建 bean 的方法,因此,在 JavaConfig 中注入 bean 只需要直接调用该方法即可。例如:

public void hello(){
    CDPlayer cdPlayer = new CDPlayer(sgtPeppers());
}

事实上,在 JavaConfig 中的方法理应是 bean 的生产者,如果遵循这个原则,上面的方法应该长这样:

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

注意到,上例直接调用了 sgtPeppers() 方法,在上一小节中,我们已经定义了 sgtPeppers() 方法,并用 @Bean 注解修饰,此处与普通方法的调用有区别:正是因为在其上使用了 @Bean 注解,Spring 将会拦截所有对它的调用,确保直接返回该方法所创建的 bean ,而不是每次都对其进行实际的调用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值