我有一个由消息驱动 bean 和几个 session bean 组成的应用程序。其中之一有一个 DAO 对象,负责访问数据库或 FTP 服务器。
我需要两个应用程序。它们之间唯一的区别是 DAO 类的实例。我可以在部署阶段指定该实例吗?
我的目的是避免代码重复。
最佳答案
如果 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
注入(inject),并在部署时指定绑定(bind)名称。
关于java - 我可以将 session bean 与其他注入(inject)的类一起重用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10961080/