问题:在spring boot 中引入了ehcache,作用于service层。
然后发现了一个问题。
如果该service注入到shiro的自定义认证域中,会导致ehcache失效!!
贴上代码:
/**
* 其他省略
*/
@Service("userService")
@Transactional(rollbackFor = RuntimeException.class)
public class UserServiceImpl implements UserService {
@Resource
private UserDao userDao;
@Override
@Cacheable(value = "jazCache") // 使用ehcache注解
public List<UserEntity> list(Map<String, Object> params) {
List<UserEntity> list = userDao.findPage(params);
return list;
}
然后,在Controller注入
@Resource
private UserService userService;
@GetMapping(value = "/all")
public ResultInfo all(@RequestParam Map<String, Object> params) {
return ResultPage.ok().total((long)1).data(this.userService.list(params));
}
然后在浏览器中访问:
第一次查询DB
第二次走缓存
接下来,重点来了。在shiro的自定义认证域中,注入userService:
@Component
public class UserRealm extends AuthorizingRealm {
@Resource
private UserService userService;
...其他省略
然后在浏览器中访问:
第一次走DB,第二次也走DB
ehcache失效了!!!
求大神~~