使用private static Map<String,List<IndustryInfoDTO>> industryInfoCache = new HashMap<>(); @GetMapping("/industryInfo") public Result getIndustryInfo(){ List<IndustryInfoDTO> list = industryInfoCache.get("list"); if (list == null){ list = enterpriseDetailsService.getIndustryInfo(); industryInfoCache.put("list",list); } return new Result().ok(list); }做缓存 优化代码 可以刷新
时间: 2023-07-15 20:14:57 浏览: 107
java 读取csv 并转为Map<String,Object>
你可以使用@Cacheable和@CacheEvict注解来对这段代码进行优化和刷新缓存。
首先,你需要在应用程序的配置类中启用缓存,例如:
```
@Configuration
@EnableCaching
public class CacheConfig {
// 缓存管理器
@Bean
public CacheManager cacheManager() {
return new ConcurrentMapCacheManager("industryInfo");
}
}
```
接下来,你可以将@Cacheable注解添加到getIndustryInfo()方法上,以指示Spring在调用该方法之前检查缓存,如果存在缓存,则直接返回缓存中的值,而不是执行方法。例如:
```
@Cacheable("industryInfo")
@GetMapping("/industryInfo")
public Result getIndustryInfo() {
List<IndustryInfoDTO> list = enterpriseDetailsService.getIndustryInfo();
return new Result().ok(list);
}
```
这将在调用getIndustryInfo()方法时将其结果缓存到名为"industryInfo"的缓存中。
如果你想要手动刷新缓存,可以添加一个@CacheEvict注解到另一个方法中,例如:
```
@CacheEvict("industryInfo")
@PostMapping("/refreshIndustryInfo")
public void refreshIndustryInfo() {
// do nothing, the cache will be automatically refreshed
}
```
这将使Spring在调用refreshIndustryInfo()方法时清除名为“industryInfo”的缓存,以便下一次调用getIndustryInfo()方法时重新查询数据库并重新缓存结果。
阅读全文