这个问题困扰了我好多天
问题
- ServiceImpl类里的方法上有缓存注解,用于将返回的实体类存入redis,下次调用时就不需要通过数据库获取实体类信息。
- Shiro框架内由于自定义了Ream,需要注入Service来获取用户实体类信息。
- 而后运行时,发现缓存注解并没有起作用,两次调用Service方法,都进入了方法,而不是读取缓存。
- 自定义Ream
/**
* 用来给shiro注入认证信息和授权信息
*/
@Component("userRealm")
public class UserRealm extends AuthorizingRealm{
/**
* shiro内注入bean时,需要加入lazy注解,否则bean可能不能正常运行(比如缓存注解)
* 参考:https://blog.csdn.net/elonpage/article/details/78965176
*/
@Autowired
@Lazy
private UserService userService;
/**
* 授权处理
* 登录时不检查用户权限
* @param principals
* @return
*/
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
return null;
}
/**
* 身份认证
*
* @param authenticationToken
* @return
* &