@Bean 注解的使用

Usage of @Bean annotation

假设我有以下 Spring 上下文配置:

@Configuration
public class Configuration {

    @Bean
    public A a() {
        return new A(b());
    }

    public B b() {
        return new B();
    }
}

如果需要 B 实例的唯一位置在 a() 内用于 A 实例构造,是否应该用 @Bean 注释 b()

如果 B 是一个计划 Java class(没有 Spring 注释)那么不,您可以使用当前配置。因为这是 A class.

的私有成员

但是如果你有需要由 spring 管理的方法(在 B class 内),比如 @PostConstruct 或 @PreDestroy,那么你应该从中创建一个 Bean B class:

@Bean
public A a(B b) {
    return new A(b);
}
@Bean
public B b() {
    return new B();
}

这样的案例是:

  • 资源将于 shutdown/close
  • 关闭
  • 关闭时要关闭的执行程序
  • jdbc 连接数
  • 等等