如何在Spring 4中通过注释设置默认bean init-method?

时间:2015-02-26 14:15:00

标签: java spring dependency-injection annotations spring-4

我正在学习使用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接口

2 个答案:

答案 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()方法。当应用程序启动时,它们都将被调用。