首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Dao和Dao划分为不同的模块?

如何将Dao和Dao划分为不同的模块?
EN

Code Review用户
提问于 2021-05-11 07:00:11
回答 1查看 65关注 0票数 0

我想提高api的性能。我在数据层设计了缓存。我使用caffine缓存。基本代码是:

CacheConfig.java

代码语言:javascript
复制
@Configuration
public class CacheConfig {

    @Autowired
    private AppDao appDao;

    @Bean(value = "appCache")
    public LoadingCache<String, App> appCache() {
        return Caffeine.newBuilder()
                .maximumSize(1000)
                .refreshAfterWrite(5, TimeUnit.MINUTES)
                .build(key -> appDao.getByKeyFromDB(key));
    }
}

AppDao.java

代码语言:javascript
复制
@Repository
public class AppDao {

    @Autowired
    @Qualifier(value = "appCache")
    private LoadingCache<String, App> appCache;

    @Autowired
    private AppMapper appMapper;

    // service call getByAppKey
    public App getByKey(String appKey) {
        App app = appCache.get(appKey);
        return app;
    }

    // appCache load data by getByKey
    public App getByKeyFromDB(String appKey) {
        LambdaQueryWrapper<App> queryWrapper = Wrappers.lambdaQuery();
        queryWrapper.eq(App::getAppKey, appKey);
        return appMapper.selectOne(queryWrapper);
    }
}

我可能将getByKey和getByKeyFromDB分成两个文件,但我不知道。如何将getByKey和getByKeyFromDB划分为不同的模块?

EN

回答 1

Code Review用户

回答已采纳

发布于 2021-05-11 10:33:38

如果您想要区分不同的类,那么应该创建两个类:

代码语言:javascript
复制
class CahedDao {
  AppCache cache;
  getByKey(String)
} 

class DbDao {
  getByKeyFromDb(String)
}

备注:

Codereview是用来检查工作代码的,如果您想解决问题,最好在stackexchange上询问。

在你的代码中有一些问题。由于DI和(坏)字段注入,您没有得到它们。

票数 0
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/260596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档