spring拦截器不生效

在平时休闲时间做一个学习型项目练手,在练习过程中,遇到一个spring拦截器不生效的问题,拦截器代码如下:

 

@Aspect
// 该注解标示该类为切面类
@Component
public class LogAopAction {
	
	@Autowired
	private LogDao logDao;

	@Around("execution(* com.lanyuan.service.impl.*.* (..))")
	public Object logAll(ProceedingJoinPoint point) {
        }
}

   被拦截对象如下:

 

@Transactional
@Service("storeService")
public class StoreServiceImpl implements StoreService {
    
    @Autowired
    private StoreDao storeDao;
    
 
    @Override
    public void add(Store store) {
   }
}

 但是如果直接调用是拦截不到的,因为采用了@Autowired注解,这个会自动装配javabean,

所以在没有生成代理类之前,就已经进行了装配,所以注入的实例为非代理类,所以无法拦截。

 

解决方案:

storeService = (StoreService) SpringContextUtil.getBean("storeService");

采用spring手动方式获取实例,在需要的时候获取代理类。

 

还有一种是使用延迟加载方式,这个需要用到lazy注解,大家可以查查网上资料。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值