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

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

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

  1. 使用init-method =“…”作为cjstehno提到的XML元素
  2. 实现Spring的InitializingBean接口。 在ApplicationContext中部署时,将在bean创build时调用afterPropertiesSet()方法。
  3. 使用@PostConstruct在bean上注释一个方法。 同样,如果部署到ApplicationContext,注释的方法将在bean创build时被调用。
  4. 如果你的bean更像是绑定到Spring生命周期的基础设施bean,那么实现ApplicationListener < ContextRefreshedEvent >。 在Spring的启动过程中,onApplicationEvent(..)方法将被调用,你可以在那里做任何你需要的工作。

假设你的上下文是在启动时加载的,在你的spring应用上下文中用一个在XMLconfiguration中显式调用的init方法创build一个bean(或者实现Spring InitializingBean)。 如果你启用了延迟加载,你将需要确保这个bean不是懒惰的。

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

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

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

你可以使用任何一个实现:

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

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

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

  @PostConstruct public void init() { }