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
}
}
我在 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
}
}