Grails Redis 缓存 - 间接调用 @Cacheable 注释方法 - 如何工作

Grails Redis Cache - Calling @Cacheable annoted method indirectly - how to work

我在 grails 2.5.3 中有以下情况:

EmployeeService{

    @Cacheable(value = "employees")
    public List<Employee> getEmployeeList() {
        return Employee.list()
    }

    public Employee getEmployee(long id){
        return getEmployeeList().find{it.id == id}
    }
}



EmployeeController{

    def employeeService

    def getEmployee(long id){
        render employeeService.getEmployee(id) as JSON
    }
}

我的问题是 - EmployeeService 中的 @Cacheable 注释方法没有将数据存储在 Redis 缓存中,我应该怎么做才能完成这种情况。

提前致谢。

缓存由spring提供。所以你需要使用spring的方式来调用方法来应用缓存:

EmployeeService {
    def grailsApplication

    @Cacheable(value = "employees")
    public List<Employee> getEmployeeList() {
        return Employee.list()
    }

    public Employee getEmployee(long id){
        return proxy.getEmployeeList().find {it.id == id}
    }

    // using springs bean proxy ensures cacheable aspects are applied
    private getProxy() {
        grailsApplication.mainContext.employeeService
    }
}