AOP切面

AOPxml说明


<aop:config>      来声明要对 aop 进行配置
     <aop:pointcut>     它是用于声明切点(简单说就是对哪些方法进行拦截)
     <aop:advisor>         定义传统的 aop 的切面,传统的 aop 切面它只能包含一个切点与一个增强
     <aop:aspect>      定义 aspectj 框架的切面.,它可以包含多个切点与多个通知
     如果切面代码是自动注入的bean,那么<aop:aspect>的ref属性直接写bean的注入名字就可以了!

<aop:scoped-proxy/>         范围代理
Spring中默认的Scope分为”singleton”和”prototype”两种。


<aop:aspectj-autoproxy></aop:aspectj-autoproxy>   自动代理
proxy-target-class属性若此值为true强制使用CGLIB代理;
expose-proxy属性是为了目标对象内部的自我调用无法实施切面中增加

AOPXml简单配置

    <!-- 1.启动Spring注解 -->
    <context:annotation-config/>
    <!-- 2.扫描 -->
    <context:component-scan base-package="com.shxt"/>
    <!-- 3.启动AOP注解 -->
    <aop:aspectj-autoproxy proxy-target-class="true"/>

切入类 注意必须加@componet否则不能注入bean

@Component
@Aspect
public class LogAnnotationAspect {

    

        /*
                execution(* com.boolib.web.*.*(..))
        第一个*的位置: 任意的返回值类型
        第二个.. 任意层次      com.shxt开头 service结尾 的任意层次
        第三个位置 *Service监控 Service结尾的类或者接口
        第四个位置 *代表类下的所有的方法
        第五个位置 ..任意的形参个数和类型
     */

        //定义切入点
        @Pointcut("execution(* com.boolib.web.*.*(..))")
        private void allMethod() {
        }

        //针对指定的切入点表达式选择的切入点应用前置通知
        @Before("execution(* com.boolib.web.*.*(..))")
        public void before() {

        

            System.out.println("【注解-前置通知】:");
        }

        //访问命名切入点来应用后置通知
        @AfterReturning("allMethod()")
        public void afterReturn() {
            System.out.println("【注解-后置通知】:方法正常结束了");
        }

        //应用最终通知
        @After("allMethod()")
        public void after() {
            System.out.println("【注解-最终通知】:不管方法有没有正常执行完成,"
                    + "一定会返回的");
        }

        //应用异常抛出后通知
        @AfterThrowing("allMethod()")
        public void afterThrowing() {
            System.out.println("【注解-异常抛出后通知】:方法执行时出异常了");
        }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nier6088

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值