在Filter中 @Autowired 一个service
这个service中的方法就再也不会用到EhCache ,
如果在Filter中把这个@Autowired 删除掉
service 中加了@Cacheable的方法就能正常被缓存.
真的是试了各种办法,我猜测是加载顺序的问题,但是就是解决不了啊。
@Configuration public class StatelessAccessControlFilter extends AccessControlFilter { @Autowired private TokenVerify tkVerify; /**就是这边 只要注入这个类,下面那个service的方法每次访问都会进入,不走缓存,去掉就正常了**/ @Autowired private BUserService userService; @Override protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) throws Exception { return false; }
@Service public class BUserServiceImpl implements BUserService { @Override @Cacheable(value = LANGUAGE_CACHE_NAME, key = CACHE_KEY + "+#usr_id") public Rlanguage getMyLanguage(Integer usr_id) { System.out.println( "沒有走索引" ); return userMapper.getMyLanguage( usr_id ); } public static final String LANGUAGE_CACHE_NAME = "language"; public static final String CACHE_KEY = "'language_'";
发到 spring4all.com
最好吧shiro的配置贴出来,我也遇到过类似的问题,是因为