当bean是单例时,何时将spring bean声明为私有静态?

时间:2013-08-06 12:00:28

标签: spring

  1. 将bean声明为静态或非静态有什么影响?
  2. 声明静态方法时,无法访问bean,因为bean不是静态的。
  3. 可以解释一下吗?

    感谢。

1 个答案:

答案 0 :(得分:2)

如果将bean声明为静态,则表示类似

@Bean
public static MyBean myBean() {
    return new MyBean();
}

然后,这样做的好处是在实例方法bean之前生成bean。例如,您可以使用BeanFactoryPostProcessor来表示:

  

应用程序上下文可以自动检测BeanFactoryPostProcessor bean   他们的bean定义并在任何其他bean获取之前应用它们   创建

在其余bean之前自动检测并初始化这些bean的Spring Java配置方法是使用静态方法声明和初始化它们。例如,

@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
    return new PropertySourcesPlaceholderConfigurer();
}

Spring会检测到PropertySourcesPlaceholderConfigurerBeanFactoryPostProcessor并将其用于

  

[resolve] $ {...}占位符在bean定义属性值中   和@Value对当前Spring环境及其版本的注释   一套PropertySources。

因为这些bean应该在其他bean之前使用实例方法初始化,所以没有必要访问它们,所以你的第二点是没有意义的。