2017-04-09 33 views
1

我正在运行一个春季启动1.5.2应用程序。 我想添加缓存到我的服务方法 我已经添加了spring-boot-starter-cache maven dependency,并且我使用了@Cacheable注解但它没有生效 我在@ Configuration类中创建了我的服务bean - 这里有一个例子春季启动启动缓存不触发

@Bean(name = "policyService") 
public IPolicyService policyService() { 
    policyService = new PolicyServiceImpl(); 
    return policyService; 
} 

这里是我的服务方法的一个例子

@Cacheable(value="policiesCache") 
    public List<PolicyDBO> findAllPolicies() { 
     LOG.info("Entered findAllPolicies"); 

     List<PolicyDBO> policyList = policyRespoitory.findAll(); 

     LOG.info("Exiting findAllPolicies"); 
     return policyList; 
    } 

我repoistory接口方法如下

@Repository 
public interface PolicyRepository extends CrudRepository<PolicyDBO, Long>{ 

    /** Find policy by id **/ 
    PolicyDBO findById(Long policyId); 
} 

每当我把这种服务方法从RestController - 缓存永远不会触发 - 它看起来是未正确设置

任何想法,我能做些什么,以获得正确的缓存设置?

感谢 达明

回答

1

假设缓存是活动的,春天缓存正确工作,但并不像你期望的那样。 @Cacheable针对结果缓存参数。

在你的情况下,缓存存储no argumentsList<PolicyDBO>的结果。

但是,当您拨打findById时,高速缓存不会找到任何与参数Long有关的任何内容,因此不会返回缓存的结果。