Я пытаюсь настроить кеш Spring, но метод все еще выполняется. У меня есть приведенный ниже код, и кеш CivilStatus не работает. Метод getCivilStatus() выполняется всегда. Кто-нибудь знает причину?
@Configuration
@EnableCaching
public class ApplicationConfig {
@Autowired
private SocioDemographicInfoService socioDemographicInfo;
@Bean
public CacheManager cacheManager() {
SimpleCacheManager cacheManager = new SimpleCacheManager();
cacheManager.setCaches(Arrays.asList(
new ConcurrentMapCache("civilStatus");
return cacheManager;
}
}
@Service
public class SocioDemographicInfoService {
@Cacheable(value="civilStatus")
public Map<String, String> getCivilStatus(){
log.info("Retrieving civilStatus");
Map<String, String> civilStatus = new HashMap<String, String>();
BufferedReader br = null;
String line = "";
String cvsSplitBy = ",";
try {
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("CatalogoEstadoCivil.csv").getFile());
br = new BufferedReader(new FileReader(file));
while ((line = br.readLine()) != null) {
String[] cod = line.split(cvsSplitBy);
civilStatus.put(cod[0].trim(), cod[1]);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return civilStatus;
}
}
}
SocioDemographicInfoService
метод с аннотацией@PostConstruct
, который загружает файл и заполняет карту. Для этого не нужно использовать абстракцию кэширования Springs. - person M. Deinum   schedule 13.12.2014getCivilStatus
вернет эту карту. Вам не нужна дополнительная сложность кэша или АОП. - person M. Deinum   schedule 13.12.2014