我想提高api的性能。我在数据层设计了缓存。我使用caffine缓存。基本代码是:
CacheConfig.java
@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
@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划分为不同的模块?
发布于 2021-05-11 10:33:38
如果您想要区分不同的类,那么应该创建两个类:
class CahedDao {
AppCache cache;
getByKey(String)
}
class DbDao {
getByKeyFromDb(String)
}备注:
Codereview是用来检查工作代码的,如果您想解决问题,最好在stackexchange上询问。
在你的代码中有一些问题。由于DI和(坏)字段注入,您没有得到它们。
https://codereview.stackexchange.com/questions/260596
复制相似问题