Tomcat中的Webapp引导代码

时间:2010-09-20 20:41:54

标签: spring tomcat spring-security bootstrapping

我正在使用Spring,Spring Security,Tomcat和MySQL开发Java webapp。现在我仍然处于一个阶段,我正在对数据库进行相当频繁的更改,以及重新创建数据库以清除测试数据。最终,这不会是一个问题,但有没有办法让实例化的bean或执行的代码来引导webapp?我希望能够利用IoC功能来使用相同的功能,例如我的应用程序用来填充原始用户帐户的PasswordEncoder。另外,我想让这个脚本创建数据库,如果它不存在,等等。有没有办法做到这一点?有没有比我建议更好的方法?我没有和我刚才描述的算法结婚,但这是我能想到的最好的方式来传达我正在寻找的东西。

提前致谢!

3 个答案:

答案 0 :(得分:3)

创建数据库模式的好方法是liquibase。您也可以插入数据。 Liquibase通过bean提供Spring集成:liquibase.spring.SpringLiquibase,因此如果需要,数据库将会更新。

答案 1 :(得分:3)

如果使用Spring,则可以register a ContextLoaderListener自动启动ApplicationContext。然后,您的ApplicationContext可以初始化数据库,最好是通过JPAHibernate,还可以using plain jdbc

答案 2 :(得分:1)

您可以使用ApplicationListener接口实现bean。

在收到ContextRefreshedEvent

时执行必要的操作

这种方法的优点是框架将为您加载上下文和所有bean,因此您可以访问它们以进行您想要进行的任何引导。

缺点是此事件在初始化和刷新时触发

<强> ContextRefreshedEvent 在初始化或刷新ApplicationContext时发布。这里初始化意味着所有bean都被加载,单例被预先实例化,ApplicationContext已经可以使用了。