美文网首页Spring
spring 的aop操作,基于aspectj的注解

spring 的aop操作,基于aspectj的注解

作者: DouDouZH | 来源:发表于2018-06-07 20:58 被阅读4次

一、步骤

1、用配置创建对象
image.png
2、在spring配置文件里开启aop的扫描操作
image.png
3、在增强的类上用注解和方法上用具体的注解
image.png

二、代码

切点user.java

package work.zhangdoudou.aop;

public class User {
    
    public void addUser() {
        System.out.println("addUser----------");
    }
}

增强/通知UserAop.java

package work.zhangdoudou.aop;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;

@Aspect
public class UserAop {
    
    //在方法上用注解配置
    @Before(value="execution(* work.zhangdoudou.aop.User.*(..))")
    public void before() {
        System.out.println("前置增强------------");
    }
    
    @AfterReturning(value="execution(* work.zhangdoudou.aop.User.*(..))")
    public void afterReturning() {
        System.out.println("后置增强------------");
    }
    
    @After(value="execution(* work.zhangdoudou.aop.User.*(..))")
    public void after() {
        System.out.println("最终增强------------"); 
    }
    
    //环绕通知
    @Around(value="execution(* work.zhangdoudou.aop.User.*(..))")
    public void around(ProceedingJoinPoint point) throws Throwable {
        //执行之前
        System.out.println("环绕-方法执行之前----");
        
        //执行被增强的方法
        point.proceed();
        
        //执行之后
        System.out.println("环绕-方法执行之后----");
    }
    
    //异常通知
    @AfterThrowing(value="execution(* work.zhangdoudou.aop.User.*(..))")
    public void afterThrowing() {
        System.out.println("异常通知-----------");
        
    }
}

配置applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="http://www.springframework.org/schema/beans  
                        http://www.springframework.org/schema/beans/spring-beans.xsd  
                        http://www.springframework.org/schema/context  
                        http://www.springframework.org/schema/context/spring-context-4.0.xsd
                         http://www.springframework.org/schema/aop 
                        http://www.springframework.org/schema/aop/spring-aop-4.0.xsd">

    <!--1 配置对象 -->
    <bean id="user" class="work.zhangdoudou.aop.User"></bean>
    <bean id="userAop" class="work.zhangdoudou.aop.UserAop"></bean>
    
    <!--开启aop的操作  开启自动代理 -->
    <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
</beans>

测试Test2.java

package work.zhangdoudou.test;

import static org.junit.Assert.*;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import work.zhangdoudou.aop.Book;
import work.zhangdoudou.aop.User;

public class Test2 {

    @Test
    public void test() {
        ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
        User user=(User)context.getBean("user");
        user.addUser();
    }
}

三、运行结果

image.png

相关文章

  • Spring之使用注解配置Spring AOP

    Spring框架通过注解配置AOP是基于AspectJ实现的。 Spring框架只是直接使用了AspectJ的注解...

  • 29、Spring5之AOP操作-准备工作

    AOP操作(准备) 1、Spring框架一般都是基于AspectJ实现AOP操作。 什么是AspectJ Aspe...

  • AOP笔记

    Spring提供了4种类型的AOP支持: 基于代理的经典Spring AOP 纯POJO切面 @AspectJ注解...

  • Spring Aop支持

    Spring提供了四种Aop支持: 基于代理的经典Spring Aop 纯Pojo切面 @AspectJ注解驱动的...

  • Spring4-2-AOP配置

    一.AOP概念 二.AOP术语 三.Spring AOP框架AspectJ配置使用(基于注解的方式) (1)必要的...

  • 第12章-Spring基于注解配置AOP

    Spring 的 AOP 功能是基于 AspectJ 实现的,支持使用注解声明式定义 AOP 切面。 理解 AOP...

  • 06 AOP

    Spring 提供了四种AOP支撑:基于代理的经典spring aop;纯POJO切面@AspectJ注解驱动的切...

  • spring--基于aspectj的注解aop操作、事务

    基于aspectj的注解aop操作 第一步创建对象 第二步在spring核心配置文件中开启aop操作image.p...

  • Spring之AOP(二)

    四、基于@AspectJ的AOP Spring除了支持Schema方式配置AOP,还支持注解方式:使用@Aspec...

  • Spring 基于 AspectJ 的 AOP 开发

    Spring 基于 AspectJ 的 AOP 开发 在 Spring 的 aop 代理方式中, AspectJ ...

网友评论

    本文标题:spring 的aop操作,基于aspectj的注解

    本文链接:https://www.haomeiwen.com/subject/kcjnsftx.html