zoukankan      html  css  js  c++  java
  • spring aop通过joinpoint传递参数

    三、总结。

    我们可以通过Advice中添加一个JoinPoint参数,这个值会由spring自动传入,从JoinPoint中可以取得。

    三、总结。

    我们可以通过Advice中添加一个JoinPoint参数,这个值会由spring自动传入,从JoinPoint中可以取得。

    三、总结。

    我们可以通过Advice中添加一个JoinPoint参数,这个值会由spring自动传入,从JoinPoint中可以取得。

    一、概述
          AOP的实现方法在上两篇博客中已经用了两种方法来实现现在的问题来了虽然我们利用AOP,那么客户端如何信息传递?利用JoinPoint接口来实现客户端给具体实现类的传递参数。
    二、代码演示。

    目录结构:

    SecurityHandler.Java

    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. package com.tgb.spring;  
    2.   
    3. import org.aspectj.lang.JoinPoint;  
    4.   
    5.   
    6. public class SecurityHandler{  
    7.   
    8.   
    9.     private void checkSecurity(JoinPoint joinPoint){  
    10.         for (int i = 0; i < joinPoint.getArgs().length; i++) {  
    11.             System.out.println(joinPoint.getArgs()[i]);  
    12.         }  
    13.         System.out.println(joinPoint.getSignature().getName());  
    14.           
    15.         System.out.println("=====checkSecurity====");  
    16.   
    17.     }  
    18.   
    19.   
    20. }  


    Client.java

    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. package com.tgb.spring;  
    2.   
    3. import org.springframework.beans.factory.BeanFactory;  
    4. import org.springframework.context.support.ClassPathXmlApplicationContext;  
    5.   
    6. import com.tgb.spring.UserManager;  
    7.   
    8.   
    9.   
    10. public class Client {  
    11.   
    12.     public static void main(String[] args) {  
    13.     BeanFactory factory=new ClassPathXmlApplicationContext("applicationContext.xml");  
    14.         UserManager userManager=(UserManager) factory.getBean("userManager");  
    15.         userManager.addUser("张三", "123");  
    16.         //userManager.delUser(1);  
    17.           
    18.     }  
    19. }  


    UserManager.java

    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. package com.tgb.spring;  
    2.   
    3. public interface UserManager {  
    4.       
    5.     public void addUser(String username,String password);  
    6.       
    7.     public void delUser(int userId);  
    8.       
    9.     public String findUserById(int userId);  
    10.       
    11.     public void modifyUser(int userId,String username,String password);  
    12.       
    13. }  


    UserManagerImpl.java

    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. package com.tgb.spring;  
    2.   
    3. public class UserManagerImpl implements UserManager {  
    4.   
    5.     public void addUser(String username, String password) {  
    6.         //checkSecurity();  
    7.             System.out.println("===UserManager.addUser===");  
    8.   
    9.     }  
    10.   
    11.     public void delUser(int userId) {  
    12.         //checkSecurity();  
    13.         System.out.println("===UserManager.delUser===");  
    14.   
    15.     }  
    16.   
    17.     public String findUserById(int userId) {  
    18.         //checkSecurity();  
    19.         System.out.println("===UserManager.findUserById===");  
    20.     return  "张三";  
    21.     }  
    22.   
    23.     public void modifyUser(int userId, String username, String password) {  
    24.         //checkSecurity();  
    25.         System.out.println("===UserManager.modifyUser===");  
    26.   
    27.     }  
    28.       
    29. //  private void checkSecurity(){  
    30. //      System.out.println("checkSecurity");  
    31. //  
    32. //  }  
    33.   
    34. }  


    applicationContext.xml

    [html] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2.   
    3.   
    4. <beans xmlns="http://www.springframework.org/schema/beans"  
    5.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    6.          xmlns:aop="http://www.springframework.org/schema/aop"  
    7.          xmlns:tx="http://www.springframework.org/schema/tx"  
    8.          xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd  
    9.            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd  
    10.            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">  
    11.   
    12.   
    13. <bean id="userManager" class="com.tgb.spring.UserManagerImpl" />  
    14. <bean id="securityHandler" class="com.tgb.spring.SecurityHandler"/>  
    15. <aop:config>  
    16.     <aop:aspect id="securityAspect" ref="securityHandler">  
    17.   
    18.          <aop:pointcut id="addAddMethod" expression="execution(* com.tgb.spring.*.*(..))" />  
    19.         <aop:before method="checkSecurity" pointcut-ref="addAddMethod" />  
    20.     </aop:aspect>  
    21. </aop:config>  
    22. </beans>  


    效果图:

    三、总结。

    我们可以通过Advice中添加一个JoinPoint参数,这个值会由spring自动传入,从JoinPoint中可以取得。

    本文转自http://blog.csdn.net/gwblue/article/details/40592117 感谢作者

  • 相关阅读:
    多线程05.thread不知道的知识
    多线程04.策略模式
    多线程03.实现Runnable接口
    多线程02.继承Thread类
    多线程01.newThread的方式创建线程
    静态代理与动态代理
    从零开始学Kotlin第七课
    项目需求变更维护难.....
    加密算法入门
    将重复的数据合并成一行-反射
  • 原文地址:https://www.cnblogs.com/panxuejun/p/6089469.html
Copyright © 2011-2022 走看看