gpt4 book ai didi

java - Spring Java 中许多 DAO 的策略

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:02:53 25 4
gpt4 key购买 nike

我们在现有项目中有许多 DAO(目前没有接口(interface),但可以改变)。我们没有为每个 DAO 类连接一个 Spring 管理的 bean 并将它们注入(inject)服务层,而是有一个类似这样的 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 接口(interface)作为服务类的属性 2.) 通过配置将 DAO 实现连接到服务方法中。 (我们有时会在一个服务类中使用多个 DAO)。

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

这个策略到目前为止对我们很有效(我们没有太多需要切换实现),但我想知道如果我们能够开始新的,是否有更好的方法?我查看了将 DAO Autowiring 为 bean,但我仍然需要在每个服务类中创建属性来表示正在使用的那些 DAO。在大型项目中,无论如何我都对开始 Autowiring bean 犹豫不决——我们需要为所有开发人员提供可见性。

感觉我在 a.) 与实现紧密耦合,但代码/配置开销较少,b.) 与接口(interface)松散耦合,但需要大量代码/配置开销之间 Swing 不定。

有没有更好的方法我想念?介于两者之间?欢迎提出意见。

最佳答案

我将把所有的 DAO 作为 Spring 管理的组件,并将它们注入(inject)到服务中以实现松散耦合。为什么你认为 Autowiring bean 在大项目中不好。?

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

@Autowired
MyDao myDao;

我没有看到太多的编码/配置开销。

关于java - Spring Java 中许多 DAO 的策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13750079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com