在应用程序启动时使用Spring MVC执行Java类
使用Spring MVC在应用程序启动时执行Java类的最佳方法是什么?
不一定是“最好的”方式。 像往常一样,有很多方法可以做到这一点,而“最好”是最适合您的项目的:
- 使用init-method =“…”作为cjstehno提到的XML元素
- 实现Spring的InitializingBean接口。 在ApplicationContext中部署时,将在bean创build时调用afterPropertiesSet()方法。
- 使用@PostConstruct在bean上注释一个方法。 同样,如果部署到ApplicationContext,注释的方法将在bean创build时被调用。
- 如果你的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() { }
- 如何在绑定spring mvc命令对象时自定义参数名称
- spring引导,logback和logging.config属性
- Spring MVC – 绑定date字段
- Spring中的BeanPostProcessor和init / destroy方法有什么区别?
- 在Springconfiguration文件中使用bean id和name之间的区别
- Spring @PostConstruct与init-method属性
- 无论如何,@Autowire需要构造函数参数的bean?
- 根据.properties文件中的属性导入Springconfiguration文件
- 有没有办法在Spring XML中指定一个默认的属性值?