2010-09-20 38 views
3

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

在此先感谢!

回答

3

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

+0

这是一个非常酷的框架。我一定会考虑这个。这不是我想要的,但我需要能够调用来自Java的插入查询来保证我使用相同的编码器。 – 2010-09-20 23:52:14

+0

您在开发期间使用liquibase所做的所有工作都可以适应您的生产环境进行更改。这是一个伟大的软件 – 2012-12-11 21:18:15

1

你可以实现与ApplicationListener接口的bean。

执行你必要的行动,当您收到ContextRefreshedEvent

这种方法的好处是,该框架将已经装起来为你的背景和你所有的豆子,所以你可以访问他们所有什么都引导你想要做的事。

的缺点是,此事件被触发初始化和刷新

ContextRefreshedEvent 当ApplicationContext初始化或刷新发布。这里初始化意味着所有的bean都被加载,单例被预先实例化并且ApplicationContext可以使用。