@Aspect 注解生效的基本条件 和 Controller 不生效原因

前几天学习了Spring AOP  想应用在项目中完成控制层的日志展示。

将请求@RequestMapping注解的方法的request对方和返回的result(自定义类型)抓取到,进行日志管理

使用了@AfterReturning

返回前通知 中获取request的方法不能通过joinPoint.getArgs()方法,得通过如下方法

HttpServletRequest  request =  ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();

Spring上下文中会记录request的对象

 

现在对遇到的几个问题进行下总结。

1、AOP代理的类,必须是在程序起来时,加载完毕的(装配到beanFactory)中的,对业务中后期创建的对象(new 出来的)不会被切面捕捉到。得通过getBean().

 

2、对于控制层@Controller标记的类中的@ReuqestMapping方法,当

<context:component-scan base-package="com.wenzy.xx">

        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service">

</context:component-scan>

<aop:aspectj-autoproxy proxy-target-class="true"/>

不在同一个xml中,会出现@Controller中的方法切不到的情况。

 

3、另想要直接切被@RequestMapping注解的方法,在切点定义时可以写为

@Poincut("@annotation(org.springframework.web.bind.annotation.RequestMapping) && execution(* com .wenzy..*(..))")

&&后面的为指定包(正则表达式)  这样就可以将两种条件结合起来了。

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值