springboot中@bean的lite模式

Spring中基于Java配置的核心内容是@Configuration注解的类和@Bean注解的方法。
@Bean注解用于表明方法的实例化,配置和初始化都是由Spring Ioc 容器管理的新对象,就像在XML配置的元素一样。开发者可以在任意的Spring@Component中使用@Bean注解方法,但大多数情况下,@Bean是配合@Configuration使用的。
使用@Configuration注解类时,这个类的目的就是作为Bean定义的地方。此外,@Configuration类内部的bean -----可以调用本类定义的其他bean作为依赖 -----
当@Bean方法在没有@configuration下声明时,他们将会被lite模式处理。例如,在@component方法中bean方法或者一个旧类的bean方法将被视为lite。

  • 有@configuration情形,相互依赖
    当@Beans相互依赖时,表示依赖关系就像一个bean方法调用另一个方法一样简
    单:
@Configuration
public class AppConfig {
@Bean
public Foo foo() {
return new Foo(bar());
} @
Bean
public Bar bar() {
return new Bar();
}
}

上面的例子,foo接受一个bar的引用来进行构造器注入:
这种方法声明的bean的依赖关系只有在@Configuration类的@Bean方法中有
效。

  • 没有@configuration情形
    lite的@Bean犯法不能声明bean之间的依赖关系,通常在lite模式下不应该调用另一个@Bean方法
    你不能在@Component类中来声明bean的依赖关系,即在@Component中@Bean是lite模式,对于上例,如果改成
@Component
public class AppConfig {
@Bean
public Foo foo() {
return new Foo(bar());
} @
Bean
public Bar bar() {
return new Bar();
}
}

则foo()方法中new Foo(bar())传入的bar()方法会每次产生一个新的Bar对象,并不会像非lite模式中,每次调用法传入的Bar对象都是同一个
推荐的方法是@Configuration类中使用Bean方法,可以确保始终使用完整的模式。这将防止相同的@Bean方法被意外的多次调用,并且有助于减少lite模式下操作时难以跟踪的微小错误。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值