可以解释一下吗?
感谢。
答案 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会检测到PropertySourcesPlaceholderConfigurer
是BeanFactoryPostProcessor
并将其用于
[resolve] $ {...}占位符在bean定义属性值中 和@Value对当前Spring环境及其版本的注释 一套PropertySources。
因为这些bean应该在其他bean之前使用实例方法初始化,所以没有必要访问它们,所以你的第二点是没有意义的。