当Springbean是单例时,何时将其声明为私有静态? 将bean声明为静态或非静态的影响是什么 声明静态方法时,不能访问bean,因为bean不是静态的
有人能解释一下吗 谢谢。如果将bean声明为静态,那么您的意思是当Springbean是单例时,何时将其声明为私有静态? 将bean声明为静态或非静态的影响是什么 声明静态方法时,不能访问bean,因为bean不是静态的,spring,Spring,有人能解释一下吗 谢谢。如果将bean声明为静态,那么您的意思是 @Bean public static MyBean myBean() { return new MyBean(); } 这样做的好处是在实例方法bean之前生成bean。例如,您可以将其用于BeanFactoryPostProcessor,该处理器声明: 应用程序上下文可以在中自动检测BeanFactoryPostProcessor bean 它们的bean定义并在任何其他bean得到之前应用它们 创造 SpringJ
@Bean
public static MyBean myBean() {
return new MyBean();
}
这样做的好处是在实例方法bean之前生成bean。例如,您可以将其用于BeanFactoryPostProcessor
,该处理器声明:
应用程序上下文可以在中自动检测BeanFactoryPostProcessor bean
它们的bean定义并在任何其他bean得到之前应用它们
创造
SpringJava的配置方法是在剩下的bean之前自动检测和初始化它们,即使用静态方法声明和初始化它们。比如说,
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
Spring将检测到propertysourcesplaceconfigurer
是一个BeanFactoryPostProcessor
,并将其用于
[解析]${…}bean定义属性值中的占位符
以及针对当前Spring环境及其应用程序的@Value注释
一组属性资源
因为这些bean应该在其他bean之前初始化,使用实例方法,无法访问它们,所以您的第二点是没有意义的。用代码向我们展示“将bean声明为静态”的含义。我指的是以下内容:public sample{@Autowired private static propertysourcesplaceplaceconfigurer;…在静态方法和非静态方法中内部使用bean。}如果我没有声明为静态的,那么我就不能在静态方法中使用bean。因此我想知道声明的区别及其好处
@bean
声明为静态的方法或不声明为静态的方法都将创建最终在应用程序上下文中的对象。将它们声明为<代码>静态
首先是将它们放入应用程序上下文中。因此这与它们的生命周期有关。您将声明为静态
的bean通常不需要能够使用其他bean(将声明为实例方法),所以这不重要。当我声明为静态时,问题是自动连线不起作用。bean在应用程序代码中内部返回null。所以我的问题是,当bean是单态时,它是否重要?您将不得不在配置中发布另一个问题。这与上的static
修饰符无关@Bean
声明。