【发布时间】:2019-06-16 20:53:19
【问题描述】:
我有一个方法findAll(),它从BD返回所有的专业,在这个方法中我把注释@Cacheable从缓存中获取数据,问题是当我执行/specialities api时,第一个我得到正确数据的时间,当我第二次执行 api 时,我得到空 id 的数据
@Service
@CacheConfig(cacheNames = ServiceConstant.SPECIALITY)
public class SpecialityServiceImpl implements SpecialityService {
@Autowired
private SpecialitySearchRepository specialitySearchRepository;
@Autowired
private SpecialtyMapper specialityMapper;
@Override
@Cacheable
public List<SpecialityDTO> findAll() {
return specialitySearchRepository.findAll().stream().map(specialityMapper::toDto)
.collect(Collectors.toCollection(LinkedList::new));
}
}
@RestController
public class SpecialityResource {
@Autowired
private SpecialityService specialityService;
@GetMapping("/specialities")
public List<SpecialityDTO> getAllSpecialitys() {
return specialityService.findAll();
}
}
配置
@Configuration
@EnableCaching
public class CacheConfiguration {
private static final String HAZELCAST_LOGGING_TYPE = "hazelcast.logging.type";
@Bean
public Config hazelCastConfig() {
return new Config().setInstanceName("cache")
.addMapConfig(
new MapConfig().setName(ServiceConstant.SPECIALITY)
.setMaxSizeConfig(new MaxSizeConfig(200, MaxSizeConfig.MaxSizePolicy.FREE_HEAP_SIZE))
.setEvictionPolicy(EvictionPolicy.LRU).setTimeToLiveSeconds(100))
.setProperty(HAZELCAST_LOGGING_TYPE, "none");
}
}
【问题讨论】:
-
粘贴你的缓存配置,可能会有帮助。
标签: spring caching hazelcast spring-cache