2017-04-09 64 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有關的任何內容,因此不會返回緩存的結果。