3

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

提前致谢!

4

3 回答 3

3

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

于 2010-09-20T21:02:40.637 回答
3

如果使用 Spring,可以注册一个 ContextLoaderListener来自动启动 ApplicationContext。然后,您的 ApplicationContext 可以初始化数据库,最好是通过JPAHibernate,但也可以使用普通 jdbc

于 2010-09-20T21:03:57.567 回答
1

ApplicationListener你可以用接口实现一个bean 。

收到通知后执行必要的操作ContextRefreshedEvent

这种方法的好处是框架会为你加载上下文和你所有的bean,所以你可以访问它们来做任何你想做的引导。

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

ContextRefreshedEvent 在 ApplicationContext 初始化或刷新时发布。此处初始化意味着所有 bean 都已加载,单例已预先实例化并且 ApplicationContext 已准备好使用。

于 2010-09-20T23:06:12.080 回答