spring boot + redis cache + @Cacheable适用于某些方法,而不适用于其他方法

sag*_*age 1 java spring caching redis spring-boot

我使用带有redis的spring boot作为缓存,通过减少查询RDBMS系统来提高应用程序性能.它工作正常,因为它准确地缓存另一个控制器的方法,但它不缓存下面的控制器:

@RequestMapping(method = RequestMethod.GET)
    @Cacheable("findByTaxOfficeId")
    private TaxPayerNameResponse findByTaxOfficeId(@RequestParam(required = true, value = "uid") String taxOfficeId) {
        StampDutyOffice stampDutyOffice = null;
Run Code Online (Sandbox Code Playgroud)

对于工作弹簧启动控制器,配置看起来相同.可以在下面找到正常工作的缓存Controller方法的示例:

 @RequestMapping(value = "/stampdutyoffice", method = RequestMethod.GET)
    @Cacheable("getTaxPayerNameByTinIdOrJtbIdReqParam2")
    public TaxPayerNameResponse2 getTaxPayerNameByTinIdOrJtbIdReqParam2(@RequestParam(required = true, value = "uid") String tinIdOrJtbIdStampDutyOffice) {
        return getTaxPayerNameByTinIdOrJtbId2(tinIdOrJtbIdStampDutyOffice);
    }
Run Code Online (Sandbox Code Playgroud)

请问有什么问题?在此先感谢您的帮助.

Ser*_*erg 5

对于一些Spring注释,您应该遵循注释方法的两个规则,以确保它有效:

  • 它应该是一个PUBLIC方法
  • 它不应该在同一个类中调用

例如,与@Async相同的情况