我有一个应用程序,它由消息驱动的bean和几个会话bean组成。其中一个有一个DAO对象,负责访问数据库或FTP服务器。
我需要两个应用程序。它们之间的唯一区别是DAO类的实例。我可以在部署阶段指定该实例吗?
我的目的是避免代码重复。
答案 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
注入,并在部署时指定绑定名称。