一个个定义缓存组件名称
package com.laoxu.cache.service.impl;
import com.laoxu.cache.bean.Employee;
import com.laoxu.cache.mapper.EmployeeMapper;
import com.laoxu.cache.service.EmployeeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.cache.annotation.Caching;
import org.springframework.stereotype.Service;
@Service
public class EmployeeServiceImpl implements EmployeeService {
@Autowired
private EmployeeMapper employeeMapper;
@Override
@Cacheable(cacheNames = "emp")
public Employee getEmployee(Integer id) {
System.out.println("查询" + id + "号员工");
return employeeMapper.getEmployee(id);
}
@Override
@CachePut(cacheNames = "emp", key = "#result.id")
public Employee updateEmployee(Employee employee) {
System.out.println("更新" + employee);
employeeMapper.updateEmployee(employee);
return employee;
}
@Override
@CacheEvict(cacheNames = "emp", key = "#id")
public void deleteEmployee(Integer id) {
System.out.println("删除" + id);
}
@Override
@CacheEvict(cacheNames = "emp", allEntries = true)
public void deleteAllEmployee() {
System.out.println("删除所有");
}
@Override
@CacheEvict(cacheNames = "emp", beforeInvocation = true)
public void deleteEmployeeById(Integer id) {
System.out.println("删除" + id);
}
@Override
@Caching(
cacheable = {
@Cacheable(value = "emp", key = "#lastName")
},
put = {
@CachePut(value = "emp", key = "#result.id"),
@CachePut(value = "emp", key = "#result.email")
}
)
public Employee getEmployeeByLastName(String lastName) {
return employeeMapper.getEmployeeByLastName(lastName);
}
}
公共定义缓存组件名称
package com.laoxu.cache.service.impl;
import com.laoxu.cache.bean.Employee;
import com.laoxu.cache.mapper.EmployeeMapper;
import com.laoxu.cache.service.EmployeeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.*;
import org.springframework.stereotype.Service;
@CacheConfig(cacheNames = "emp")
@Service
public class EmployeeServiceImpl implements EmployeeService {
@Autowired
private EmployeeMapper employeeMapper;
@Override
@Cacheable()
public Employee getEmployee(Integer id) {
System.out.println("查询" + id + "号员工");
return employeeMapper.getEmployee(id);
}
@Override
@CachePut(key = "#result.id")
public Employee updateEmployee(Employee employee) {
System.out.println("更新" + employee);
employeeMapper.updateEmployee(employee);
return employee;
}
@Override
@CacheEvict(key = "#id")
public void deleteEmployee(Integer id) {
System.out.println("删除" + id);
}
@Override
@CacheEvict(allEntries = true)
public void deleteAllEmployee() {
System.out.println("删除所有");
}
@Override
@CacheEvict(beforeInvocation = true)
public void deleteEmployeeById(Integer id) {
System.out.println("删除" + id);
}
@Override
@Caching(
cacheable = {
@Cacheable(key = "#lastName")
},
put = {
@CachePut(key = "#result.id"),
@CachePut(key = "#result.email")
}
)
public Employee getEmployeeByLastName(String lastName) {
return employeeMapper.getEmployeeByLastName(lastName);
}
}
两者等价。