4

在使用 Spring 多年后,我目前正在迁移到 EJB3.1。我想在 EJB 中实现的一件事是我的 MigrationManager。在 Spring 中,我有一个处理数据库模式和数据迁移的 bean。为此,我实现了一个 Spring BeanFactoryPostProcessor,因为这样我注入了数据库连接,但 JPA 系统尚未初始化。所以我可以执行所有迁移步骤,然后让应用程序完成启动。

我怎么能在 EJB3.1 中做这样的事情(使用 CDI ......如果这很重要)

克里斯

4

1 回答 1

0

这是从 EJB 运行一些初始化代码的方法:

@Singleton
@Startup
public class MigrationManager {
    @PostConstruct
    public void migrate() {
       // do work
    }
}

您不需要单独的应用程序(如上面的评论中所建议)。

EntityManager 被延迟实例化,因此只要您不将 an 注入到其他一些启动代码中,这应该让您有机会在 an实际访问数据库EntityManager之前更新您的数据库模式。EntityManager

顺便说一句,对于数据库模式迁移,我推荐Liquibase,它可以由ServletContextListener.

于 2013-03-12T19:18:45.263 回答