0

我有一个由消息驱动 bean 和几个会话 bean 组成的应用程序。其中之一有一个 DAO 对象,负责访问数据库或 FTP 服务器。

我需要有两个应用程序。它们之间的唯一区别是 DAO 类的实例。我可以在部署阶段指定该实例吗?

我的目的是避免代码重复。

4

1 回答 1

1

如果 DAO 只是一个 POJO,那么如果您使用的是 EE6,我建议使用 Class env-entry(如果不是,则建议使用 String env-entry,然后自己执行 Class.forName):

<env-entry>
  <env-entry-name>daoClass</env-entry-name>
  <env-entry-type>java.lang.Class</env-entry-type>
  <!-- Specify a default, override at deployment time. -->
  <env-entry-value>com.example.project.DefaultDAO</env-entry-value>
</env-entry>

@Resource(name="daoClass")
private void setDAOClass(Class<com.example.project.DAO> daoClass) {
    this.dao = daoClass.newInstance();
}

或者,如果您的 DAO 实现是 EJB,那么您可以使用@EJB注入,并在部署时指定绑定名称。

于 2012-06-10T15:53:31.933 回答