我可以将会话bean重用于另一个注入的类吗?

时间:2012-06-09 12:37:48

标签: java java-ee dependency-injection ejb stateless-session-bean

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

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

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

1 个答案:

答案 0 :(得分:1)

如果DAO只是一个POJO,那么如果您使用的是EE6(或者如果您不是,则使用String env-entry,然后自己执行Class.forName),我会建议使用类env条目:< / p>

<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注入,并在部署时指定绑定名称。