Java:spring框架(3)AOP面向切面

一.创建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: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"> <!-- bean definitions here -->
    <!--配置对象-->
/*
* 1. 配置book对象, 设置id为book
*/
    <bean id="book" class="com.company.Book"></bean>
    <bean id="mybook" class="com.company.Mybook"></bean>

    <aop:config>
        <!--设置切入点-->
        /*
        *  1. id属性: 标记切入点
        *  2.expression属性: "execution(* com.company.Book.*(..))" 定位到类的方法 ,"*" 表示全部
        */
        <aop:pointcut id="pointcut1" expression="execution(* com.company.Book.*(..))"></aop:pointcut>

        <!--设置切入面-->
        /*
        *  1. ref属性: 设置即将切入的配置对象的id
        */
        <aop:aspect ref="my book">
            <!--前置增强-->
            /*
             *  1.method属性: 设置你想切入MyBook类中的方法
             *  2.pointcut-ref属性:  切入点的id
             */
            <aop:before method="before1" pointcut-ref="pointcut1"></aop:before>

            <!--后置增强-->
            <aop:after-returning method="after1" pointcut-ref="pointcut1"></aop:after-returning>

            <!--环绕增强-->
            <aop:around method="round1" pointcut-ref="pointcut1"></aop:around>

        </aop:aspect>

    </aop:config>
</beans>

二. 创建Book类

public class Book {
    public void add(){
        System.out.println("add.....");
    }
}

三.创建Mybook类

public class Mybook {
    //前置增强
    public void before1(){
        System.out.println("前置增强.....");
    }
    //后置增强
    public void after1(){
        System.out.println("后置增强.....");
    }
    //环绕增强
    public void round1(ProceedingJoinPoint proceedingJoinPoint)throws Throwable{
        //增强方法之前
        System.out.println("环绕增强之前.....");
        /*
         *  1. 调用这个方法才有效
         */
        proceedingJoinPoint.proceed();
        //增强方法之后
        System.out.println("环绕增强之后.....");
    }
}

四.创建测试类

/*
 *  1. 创建ApplicationContext对象,加载Bean1文件
 *  2.通过配置对象的id获取到Book对象
 */
ApplicationContext context = new ClassPathXmlApplicationContext("Bean1");
Book book = (Book) context.getBean("book");
book.add();  //调用Book类的add()方法

//打印结果
前置增强.....
环绕增强之前.....
add.....
环绕增强之后.....
后置增强.....
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,800评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,118评论 6 342
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,242评论 18 399
  • 一直以来感觉,挺难唱的一首歌,就是刀哥的这首经典的歌--披着羊皮的狼。如果能完全驾驭这首歌,其他的都是小case....
    丫头sYM阅读 3,297评论 0 0
  • 以后不开心的时候就来这里发泄发泄… 当我情感抒发之地、 开始。
    女徒阅读 2,767评论 0 0