美文网首页
Spring_9 Spring基于AspectJ AOP 注解实

Spring_9 Spring基于AspectJ AOP 注解实

作者: mm_cuckoo | 来源:发表于2017-09-21 23:38 被阅读67次

Spring AOP 使用注解方式增强

配置spring.xml文件

  1. 在 spring.xml 中开启AOP注解。
  2. 在 spring.xml 中实例增强类和被增强(也可使用注解)
    开启注入配置方法:
<aop:aspectj-autoproxy/>
<?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: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/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
 
    <!-- 1. 开启 AOP 自动代理(注解) -->
    <aop:aspectj-autoproxy/>
    
    <!-- 2. 实例化对象 -->
    <bean id="book" class="com.sfox.spring.aop.Book"/>
    <bean id="myBook" class="com.sfox.spring.aop.MyBook"/>
    
</beans>

被增强的实体

package com.sfox.spring.aop;

public class Book {
    public void add(){
        System.out.println("被增强的方法.......");
    }
}

增强的实体

package com.sfox.spring.aop;

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

//设置增强类
@Aspect
public class MyBook {
    //设置前置增强
    @Before(value="execution(* com.sfox.spring.aop.Book.*(..))")
    public void befor(){
        System.out.println("注解前置增强......");
    }
    
    @After(value="execution(* com.sfox.spring.aop.Book.*(..))")
    public void after(){
        System.out.println("注解后置增强......");
    }
    
    @Around(value="execution(* com.sfox.spring.aop.Book.*(..))")
    public void around(ProceedingJoinPoint proceedingJoinPoint) throws Throwable{
        System.out.println("注解运行方法后.....");
        proceedingJoinPoint.proceed();
        System.out.println("注解运行方法后.....");
    }
}

注解说明:

  1. @Aspect : 设置增强类
  2. @Before(value="表达式") : 前置增强
  3. @After(value="表达式") : 后置增强
  4. @Around(value="表达式") : 环绕增强

运行结果

注解运行方法后.....
注解前置增强......
被增强的方法.......
注解运行方法后.....
注解后置增强......

相关文章

  • Spring_9 Spring基于AspectJ AOP 注解实

    Spring AOP 使用注解方式增强 配置spring.xml文件 在 spring.xml 中开启AOP注解。...

  • Spring之使用注解配置Spring AOP

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

  • 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之AOP(二)

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

  • Spring 基于 AspectJ 的 AOP 开发

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

  • 深入理解SpringAOP-基于注解的方式

    从Spring2.0开始,Spring AOP框架集成了AspectJ的部分功能,SpringAOP基于注解的方式...

网友评论

      本文标题:Spring_9 Spring基于AspectJ AOP 注解实

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