使用Spring MVC在应用程序启动时执行Java类

时间:2011-07-13 19:27:19

标签: java spring spring-mvc

使用Spring MVC在应用程序启动时执行Java类的最佳方法是什么?

3 个答案:

答案 0 :(得分:63)

不一定是“最佳”方式。像往常一样,有很多方法可以做到这一点,“最好的”是最适合你项目的:

  1. 在XML中的bean元素上使用init-method =“...”,如cjstehno提到的那样
  2. 实现Spring的InitializingBean接口。当部署在ApplicationContext中时,将在创建bean时调用afterPropertiesSet()方法。
  3. 使用@PostConstruct在bean上注释方法。同样,如果部署到ApplicationContext,则在创建bean时将调用带注释的方法。
  4. 如果您的bean更多是要绑定到Spring生命周期的基础架构bean,请实现ApplicationListener< ContextRefreshedEvent>。 onApplicationEvent(..)方法将在Spring启动时调用,你可以在那里做任何你需要的工作。

答案 1 :(得分:22)

假设您的上下文在启动时加载,请在Spring应用程序上下文中创建一个bean,并在XML配置中显式调出init方法(或实现Springs InitializingBean)。如果你启用了延迟加载,你需要确保这个bean不是懒惰的。

<bean name="starter" init-method="start" class="com.my.StarterBean" lazy="false" />

(请仔细检查文档中的参数)。

如果在启动时未加载上下文,则可以注册服务器上下文侦听器(Servlet API的一部分,而不是Spring)。

答案 2 :(得分:6)

您可以使用任一实现:

1)实现接口InitializingBean。这种方法被授予加载所有bean然后调用afterPropertiesSet方法。

    @Override
    public void afterPropertiesSet() throws Exception {
        init();
    }

2)使用JSR-250的注释@PostConstruct。这种方法不会等待加载spring bean。

   @PostConstruct
    public void init() {

    }