• java之Spring实现AOP


    方式一,实现MethodBeforeAdvice,AfterReturningAdvice接口,在applicationContext.xml中注入bean,创建切入点,配置环绕增加,xml需要引入aop约束。
    public void before(Method method, Object[] objects, Object o)//目标方法,方法参数,目标类
    public void afterReturning(Object o, Method method, Object[] objects, Object o1)//目标方法返回值,目标方法,方法参数,目标类

    <aop:config>
            <!-- 切入点 execution(返回类型 类.方法名(参数列表))-->
            <!--第一个*代表所有类型,第二个*代表类中所有方法,(..)代表任意参数-->
            <aop:pointcut id="pointcut" expression="execution(* com.jay.service.UserServiceImpl.*(..))"/>
            <!--执行环绕增加-->
            <aop:advisor advice-ref="logBefore" pointcut-ref="pointcut"></aop:advisor>
            <aop:advisor advice-ref="logAfter" pointcut-ref="pointcut"></aop:advisor>
    </aop:config>
    

     方式二,自定义类和方法,方法中无法通过参数自动获取目标类的相关信息

    <aop:config>
        <aop:aspect ref="log">
            <aop:pointcut id="point" expression="execution(* com.jay.service.UserService.*(..))"/>
            <aop:before method="before" pointcut-ref="point" />
            <aop:after method="after" pointcut-ref="point" />
        </aop:aspect>
    </aop:config>
    

     方式三,注解实现AOP

    package com.jay.service;
    
    import org.aspectj.lang.annotation.After;
    import org.aspectj.lang.annotation.Aspect;
    import org.aspectj.lang.annotation.Before;
    
    @Aspect
    public class AnnotationPointCut {
        @Before("execution(* com.jay.service.UserServiceImpl.*(..))")
        public void before(){
            System.out.println("前...");
        }
        @After("execution(* com.jay.service.UserServiceImpl.*(..))")
        public void after(){
            System.out.println("后...");
        }
    }
    

     配置:

    <!--方式三,注解实现AOP-->
    <bean id="annotationPointCut" class="com.jay.service.AnnotationPointCut"/>
    <!--开启注解支持-->
    <aop:aspectj-autoproxy/>
    

     测试:

    @Test
    public void test3() {
            ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
            //代理的是一类业务,需要使用接口
            UserService m = context.getBean("userService",UserService.class);
            m.getUser("jay.x");
    }
    

     要引入依赖
    <!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
    <dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
    <version>1.9.7</version>
    </dependency>

  • 相关阅读:
    DataGrid和GridView鼠标移动上面背景变色
    Javascript页面跳转常用代码(测试通过)
    设为首页,加入收藏夹
    Javascript实现金额千分位自动分位
    对用户输入内容进行字数提示功能
    Javascript网页刷新方法集锦(测试通过)
    asp.net 上传图片并作处理 水印 缩略图(测试OK)
    ASP.NET常用函数(参考用)
    Javascript弹出对话框 确定取消转到不同页面
    silverligth +wcf 下载文件
  • 原文地址:https://www.cnblogs.com/xsj1989/p/15078841.html
Copyright © 2020-2023  润新知