我正在学习使用Spring 4 by Java注释,我无法找到如何将默认的init-method设置为属于特定配置的所有bean,而无需在所有clases中添加@PostContruct注释来初始化方法,也没有使用它们实现InitializeBean接口......我只想做这样的事情:
<beans default-init-method="init">
<bean id="blogService" class="com.foo.DefaultBlogService">
</bean>
<bean id="anotherBean" class="com.foo.AnotherBean">
</bean>
</beans>
所以,我想通过Java注释做到这一点,我想在bean的配置容器上设置默认bean配置。那可能吗?此致
编辑:我真正想要做的是告诉spring运行&#34;初始化&#34;默认情况下,我在BeansConfigurations类中创建的所有bean上的方法。这意味着,在默认情况下,放置一些注释或确定所有包含的bean将运行此初始化方法的内容。但正如我之前所说,我不想触摸bean类,我的意思是,我不想为每个bean类的每个初始化方法添加@PostConstructor注释,我不想要每个bean实现InitializeBean接口
答案 0 :(得分:5)
您可以执行以下操作:
@Configuration
public class SomeConfig {
@Bean(initMethod = "initMethodName")
public SomeBeanClass someBeanClass() {
return new SomeBeanClass();
}
}
您可以为要调用initMethodName
的每个bean重复此操作。
您可以更进一步,实现meta-annotation之类的
@Bean(initMethod = "initMethodNAme")
public @interface MyBean {
}
并在@MyBean
@Bean(initMethod = "initMethodName")
代替SomeConfig
答案 1 :(得分:0)
如果我正确理解你的问题,你希望每个bean都运行它的init方法(如果有的话)而不在配置文件中声明所有这些方法。我认为你自己的帖子已经有了答案,它是default-init-method="init"
。在您想要初始化的bean类中,在每个类中实现public void init()
方法。当应用程序启动时,它们都将被调用。