• spring-纯pojo切面


    一.导包

    <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>4.3.9.RELEASE</version>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aspects</artifactId>
    <version>4.3.9.RELEASE</version>
    </dependency>
    二.代理类
     1 package com.yztc.pojo;
     2 
     3 import org.aspectj.lang.ProceedingJoinPoint;
     4 
     5 /**
     6  * _ooOoo_
     7  * o8888888o
     8  * 88" . "88
     9  * (| -_- |)
    10  * O = /O
    11  * ___/`---'\____
    12  * .   ' \| |// `.
    13  * / \||| : |||// 
    14  * / _||||| -:- |||||- 
    15  * | | \ - /// | |
    16  * | \_| ''---/'' | |
    17  *  .-\__ `-` ___/-. /
    18  * ___`. .' /--.-- `. . __
    19  * ."" '< `.___\_<|>_/___.' >'"".
    20  * | | : `- \`.;` _ /`;.`/ - ` : | |
    21  *   `-. \_ __ /__ _/ .-` / /
    22  * ======`-.____`-.___\_____/___.-`____.-'======
    23  * `=---='
    24  * .............................................
    25  *
    26  * @author bindu
    27  * @date 2017-10-19 14:04
    28  */
    29 
    30 
    31 public class SleepAspect {
    32 
    33 
    34 
    35     public void before(){
    36         System.out.println("睡觉之前拖衣服");
    37     }
    38     public void afterReturning(){
    39         System.out.println("睡觉");
    40     }
    41     public void afterThrowing(Exception ex) throws Exception {
    42         System.out.println("出大事了,有bug");
    43         System.out.println(ex.getMessage());
    44     }
    45     public Object around(ProceedingJoinPoint pjp) throws Throwable{
    46         Object proceed =null;
    47         if (!"".equals("admin")){
    48             System.out.println("核心方法被执行");
    49             proceed = pjp.proceed(pjp.getArgs());
    50             System.out.println("核心方法执行完");
    51         }
    52         return proceed;
    53     }
    54 }

    三.代理接口和实现类

    1 package com.yztc.pojo;
    2 
    3 public interface SleepDao {
    4     public String sleep(String name) throws Exception;
    5 }
     1 package com.yztc.pojo;
     2 
     3 /**
     4  * _ooOoo_
     5  * o8888888o
     6  * 88" . "88
     7  * (| -_- |)
     8  * O = /O
     9  * ___/`---'\____
    10  * .   ' \| |// `.
    11  * / \||| : |||// 
    12  * / _||||| -:- |||||- 
    13  * | | \ - /// | |
    14  * | \_| ''---/'' | |
    15  *  .-\__ `-` ___/-. /
    16  * ___`. .' /--.-- `. . __
    17  * ."" '< `.___\_<|>_/___.' >'"".
    18  * | | : `- \`.;` _ /`;.`/ - ` : | |
    19  *   `-. \_ __ /__ _/ .-` / /
    20  * ======`-.____`-.___\_____/___.-`____.-'======
    21  * `=---='
    22  * .............................................
    23  *
    24  * @author bindu
    25  * @date 2017-10-19 14:01
    26  */
    27 
    28 
    29 public class SleepDaoImpl implements SleepDao {
    30     @Override
    31     public String sleep(String name) throws Exception {
    32         if (!name.equals("xm")){
    33             throw new Exception("睡你妹啊,起来嗨杯");
    34         }
    35         System.out.println("开始睡觉");
    36         return "小明";
    37     }
    38 }

    纯pojo切面 ,配置xml文件:spring-context.xml

    代码不变,只是修改配置文件,加入AOP配置即可

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4        xmlns:aop="http://www.springframework.org/schema/aop"
     5        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">
     6 
     7     <bean id="sleep" class="com.yztc.pojo.SleepDaoImpl"/>
     8     <bean id="sleepAspect" class="com.yztc.pojo.SleepAspect"/>
     9 
    10     <!--proxy-target-class="true" 表示使用cglib代理-->
    11     <!--配置AOP-->
    12     <aop:config>
    13         <!--切面-->
    14         <aop:aspect id="aspect" ref="sleepAspect">
    15             <!--切入点的配置-->
    16             <aop:pointcut id="pointcut" expression="execution(* com.yztc.pojo.*.Sleep.*(..))"/>
    17 
    18             <aop:before method="before" pointcut-ref="pointcut"/>
    19             <aop:after-throwing method="afterThrowing" throwing="ex" pointcut-ref="pointcut"/>
    20             <aop:around method="around" pointcut-ref="pointcut"/>
    21             <aop:after-returning method="afterReturning" pointcut-ref="pointcut"/>
    22         </aop:aspect>
    23     </aop:config>
    24 </beans>

    四.测试

     1 package com.yztc.pojo;
     2 
     3 import org.springframework.context.support.ClassPathXmlApplicationContext;
     4 
     5 /**
     6  * _ooOoo_
     7  * o8888888o
     8  * 88" . "88
     9  * (| -_- |)
    10  * O = /O
    11  * ___/`---'\____
    12  * .   ' \| |// `.
    13  * / \||| : |||// 
    14  * / _||||| -:- |||||- 
    15  * | | \ - /// | |
    16  * | \_| ''---/'' | |
    17  *  .-\__ `-` ___/-. /
    18  * ___`. .' /--.-- `. . __
    19  * ."" '< `.___\_<|>_/___.' >'"".
    20  * | | : `- \`.;` _ /`;.`/ - ` : | |
    21  *   `-. \_ __ /__ _/ .-` / /
    22  * ======`-.____`-.___\_____/___.-`____.-'======
    23  * `=---='
    24  * .............................................
    25  *
    26  * @author bindu
    27  * @date 2017-10-19 15:22
    28  */
    29 
    30 
    31 public class TestMain {
    32 
    33 
    34 
    35     public static void main(String[] args) {
    36         String xm=null;
    37         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring-context.xml");
    38         SleepDao sleep = (SleepDao) context.getBean("sleep");
    39         try {
    40             xm = sleep.sleep("xm");
    41         } catch (Exception e) {
    42             e.printStackTrace();
    43         }
    44         System.out.println(xm);
    45     }
    46 }
  • 相关阅读:
    【SRX】折腾了半天终于我的那对SRX210 升级到了 12.1R1.9
    [C puzzle book] Pointers and Arrays
    [Zebos Learning] RIP
    [C puzzle book] Preprocessor
    [C puzzle book] Preprocessor for C
    [C puzzle book] Storage Class
    在Linux系统中重现黑客帝国经典画面
    linux下/dev/null被误删
    学习聊天系统心得!
    学习完了聊天系统的感受!
  • 原文地址:https://www.cnblogs.com/1218-mzc/p/7693058.html
Copyright © 2020-2023  润新知