使用spring ioc的可交换数据层

Bla*_*man 2 java spring dependency-injection spring-mvc

我为每个表都有DAO,它们都实现了一个接口.

现在我希望能够(可能)交换数据库层实现.

所以我的策略是创建一个DaoFactory,这个DaoFactory将特定于我的DAO的特定实现.

所以我会有休眠的DAO.然后是一个DaoHibernateFactory,它看起来像:

public class DaoHibernateFactory implements DaoFactory
{


     public UserDao GetUserDao() {

          return new UserHibernateDao();
     }


}
Run Code Online (Sandbox Code Playgroud)

然后在我的所有经理/服务类中,我将使用当前通过spring ioc连接的Dao___Factory.

这有意义吗?建议?

Jas*_*Day 5

我会为每个实现分别配置文件,而不是使用工厂.这样春天可以为你注入你的DAO,你不必打电话或维持一个额外的工厂类.

例如:

休眠-data.xml中:

<bean id="userDAO" class="com.foo.dao.hibernate.HibernateUserDao">
    ...
</bean>
Run Code Online (Sandbox Code Playgroud)

ibatis的-data.xml中:

<bean id="userDAO" class="com.foo.dao.ibatis.IBatisUserDao">
    ...
</bean>
Run Code Online (Sandbox Code Playgroud)

等等

然后,您可以通过更改-data包含在您的文件中来替换实现web.xml.