zoukankan      html  css  js  c++  java
  • Spring中 aop的 xml配置(简单示例)

    示例:

      aop,即面向切面编程,面向切面编程的目标就是分离关注点。

    比如:小明(一位孩子)想吃苹果,首先得要有苹果,其次才能吃。那么妈妈负责去买水果,孩子负责吃,这样,既分离了关注点,也减低了代码的复杂程度

    示例:

    孩子类:

    复制代码
    @Component
    public class Child {
        
        public void eat(){
            System.out.println("小孩子吃苹果");
        }
        
    }
    复制代码

    妈妈类(切面类):

    复制代码
    public class Mom {
    
        public void buy(){//前置通知
            System.out.println("买水果");
        }
    
        public void clear(){//后置通知
            System.out.println("收拾果核");
        }
    
    }
    复制代码

     aop2.xml配置文件:

    复制代码
     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     3        xmlns:context="http://www.springframework.org/schema/context"
     4        xmlns:p="http://www.springframework.org/schema/p"
     5        xmlns:util="http://www.springframework.org/schema/util"
     6        xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop"
     7        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.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
     8 
     9     <!--目标对象 孩子类-->
    10     <bean id="child" class="com.oukele.learning.aop0.Child"/>
    11 
    12     <!--切面类-->
    13     <bean id="mom" class="com.oukele.learning.aop0.Mom"/>
    14     <!--面向切面编程-->
    15     <aop:config>
    16         <!--定义切面-->
    17         <aop:aspect ref="mom">
    18             <!--定义切点-->
    19             <aop:pointcut id="action" expression="execution(* *.*(..))"/>
    20             <!-- 声明前置通知 (在切点方法被执行前调用)-->
    21             <aop:before method="buy" pointcut-ref="action"/>
    22             <!-- 声明后置通知 (在切点方法被执行后调用)-->
    23             <aop:after method="clear" pointcut-ref="action"/>
    24         </aop:aspect>
    25     </aop:config>
    26 
    27 
    28 </beans>
    复制代码

    测试类:

    复制代码
    public class Main {
        public static void main(String[] args) {
            ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("aop2.xml");
            Child child = (Child) context.getBean("child");
            child.eat();
        }
    }
    复制代码

    结果:

    1 买水果
    2 小孩子吃苹果
    3 收拾果核

    案例示例下载地址:https://github.com/nongzihong/Spring-aop-xml

  • 相关阅读:
    安全规约
    课时作业1
    C# 操作防火墙 个人类库
    解决WinScp连接被拒绝的问题
    C# 使用WinSCP方法 类库、脚本
    【运维知识】BAT处理 延迟启动程序 临时解决网络IP获取慢导致的网络连接失败
    AngularJS入门教程之与服务器(Ajax)交互操作示例【附完整demo源码下载】
    用Angular实时获取本地Localstorage数据,实现一个模拟后台数据登入的效果
    AngularJS实现ajax请求的方法
    AngularJS中指令的四种基本形式实例分析
  • 原文地址:https://www.cnblogs.com/nongzihong/p/10191026.html
Copyright © 2011-2022 走看看