在使用 Spring 多年后,我目前正在迁移到 EJB3.1。我想在 EJB 中实现的一件事是我的 MigrationManager。在 Spring 中,我有一个处理数据库模式和数据迁移的 bean。为此,我实现了一个 Spring BeanFactoryPostProcessor,因为这样我注入了数据库连接,但 JPA 系统尚未初始化。所以我可以执行所有迁移步骤,然后让应用程序完成启动。
我怎么能在 EJB3.1 中做这样的事情(使用 CDI ......如果这很重要)
克里斯
这是从 EJB 运行一些初始化代码的方法:
@Singleton
@Startup
public class MigrationManager {
@PostConstruct
public void migrate() {
// do work
}
}
您不需要单独的应用程序(如上面的评论中所建议)。
EntityManager 被延迟实例化,因此只要您不将 an 注入到其他一些启动代码中,这应该让您有机会在 an实际访问数据库EntityManager
之前更新您的数据库模式。EntityManager
顺便说一句,对于数据库模式迁移,我推荐Liquibase,它可以由ServletContextListener
.