1
나는 @Cacheable로 주석을 달았지만 캐시는 전혀 작동하지 않는다. 나는 방법 안에 로그 메시지를 넣었다.Spring @Cacheable Not Working
<cache:annotation-driven mode="proxy" proxy-target-class="true" cache-manager="cacheManager" />
<bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
<property name="configLocation" value="WEB-INF/ehcache/ehcache.xml"></property>
<property name="shared" value="true"></property>
</bean>
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
<property name="cacheManager" ref="ehcache"></property>
</bean>
@Controller
@RequestMapping(value = "/analytics")
public class AnalyticsController {
@Autowired
private ReportDao reportDao;
/**
*
*/
public AnalyticsController() {
}
@RequestMapping(value = "/lcr-report", method = RequestMethod.GET)
public String viewCostReport(ModelMap map) {
List<Country> countryList = reportDao.getAllCountry();
map.put("countryList", countryList);
return "lcrReport";
}
}
@Repository
@Transactional(propagation=Propagation.REQUIRED, isolation=Isolation.DEFAULT,
rollbackFor={DataAccessException.class, SQLException.class, Exception.class})
public class ReportDao {
@Autowired
private JdbcTemplate dao;
/**
*
*/
public ReportDao() {
}
@Cacheable(value = {"reportDao"}/*, key= "T(Country).hash(#List<Country>)"*/)
@Transactional(propagation=Propagation.REQUIRED, isolation=Isolation.DEFAULT, readOnly=true,
rollbackFor={DataAccessException.class, SQLException.class, Exception.class})
public List<Country> getAllCountry() {
List<Country> countryList = null;
BeanPropertyRowMapper<Country> mapper = new BeanPropertyRowMapper<Country>(Country.class);
PreparedStatementCreator psc = new GenericPreparedStatementCreator("select c.country_code as countryCode, c.name as countryName from country c");
System.out.println("Not from cache");
countryList = dao.query(psc, mapper);
return countryList;
}
}
방법에 대한 목록에 대한 키를 추가하는 방법은 무엇입니까? –
peterwkc
'ehcache.xml'에 문제가 있다고 생각합니다. 게시 해주세요. –