微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spring Java中许多DAO的策略

我们在现有项目中有许多DAO(目前没有接口,但可以改变).我们没有为每个DAO类连接一个Spring管理的bean并将它们注入服务层,而是有一个类似于这样的DAO“工厂”:

public class DAOFactory {
private static DAOFactory daoFac;

static{
    daoFac = new DAOFactory();
}

private DAOFactory(){}

public static DAOFactory getInstance(){
    return daoFac;
}

public MyDAO1 getMyDAO1(){
    return new MyDAO1();
}

    public MyDAO2 getMyDAO2(){
    return new MyDAO2();
}
    ...

(注意MyDAO1和MyDAO2是具体的类)

这允许我们在服务层内轻松添加/调用DAO方法,而不必1.)将DAO接口作为属性添加到服务类2.)通过配置将DAO实现连接到服务方法. (我们有时在一个服务类中使用多个DAO).

DAOFactory.getInstance().getMyDAO1().doSomething();

到目前为止,这个策略对我们有用(我们不太需要切换实现),但我想知道如果我们能够开始新的更好的方法吗?我考虑将DAO自动装配为bean,但我仍然需要在每个服务类中创建属性来表示正在使用的DAO.在一个大型项目中,我仍然犹豫是否开始自动布线bean – 我们需要为所有开发人员提供可见性.

感觉就像我在一个实体之间紧密耦合,但是更少的代码/配置开销和b.)松散地耦合到接口,但需要大量的代码/配置开销.

有没有更好的方法让我失踪?介于两者之间?意见表示欢迎.

最佳答案
我将所有DAO作为Spring托管组件并将它们注入到松散耦合的服务中.为什么你认为autowiring bean在一个大项目中是坏的.

只需使用@Component注释每个DAO类
并用.替换MyDao mydao = factory.getmyDao()

@Autowired
MyDao myDao;

我没有看到它的编码/配置开销.

原文地址:https://www.jb51.cc/spring/432553.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐