`
fengzl
  • 浏览: 216232 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

spring Aop 实现

阅读更多
java 代码
 
  1. package com.test;  
  2.   
  3. public interface StudentService {  
  4.       
  5.     public void addStudent(String name);  
  6.   
  7. }  
  8.   
  9. package com.test;  
  10.   
  11. public class StudentServiceImpl implements StudentService{  
  12.   
  13.     @Override  
  14.     public void addStudent(String name) {  
  15.         System.out.println("##增加一个姓名是"  + name + "学生!");          
  16.     }  
  17.   
  18. }  
  19.   
  20. package com.test;  
  21.   
  22. import java.lang.reflect.Method;  
  23.   
  24. import org.springframework.aop.MethodBeforeAdvice;  
  25. //调用前增强  
  26. public class BeforeAdvice implements MethodBeforeAdvice {  
  27.   
  28.     @Override  
  29.     public void before(Method arg0, Object[] arg1, Object arg2) throws Throwable {  
  30.         // TODO Auto-generated method stub  
  31.         System.out.println("##before -- 方法调入前的操作!");  
  32.     }  
  33.   
  34. }  
  35.   
  36. package com.test;  
  37.   
  38. import java.lang.reflect.Method;  
  39.   
  40. import org.springframework.aop.AfterReturningAdvice;  
  41. //结束之后  
  42. public class AfterAdvice implements AfterReturningAdvice {  
  43.   
  44.     @Override  
  45.     public void afterReturning(Object arg0, Method arg1, Object[] arg2,  
  46.             Object arg3) throws Throwable {  
  47.         // TODO Auto-generated method stub  
  48.         System.out.println("##after -- 方法返回之后的操作");  
  49.     }  
  50.   
  51. }  
  52.   
  53. package com.test;  
  54.   
  55. import org.aopalliance.intercept.MethodInterceptor;  
  56. import org.aopalliance.intercept.MethodInvocation;  
  57. //环绕增强  
  58. public class CompareInterceptor implements MethodInterceptor{  
  59.   
  60.     @Override  
  61.     public Object invoke(MethodInvocation invocation) throws Throwable {  
  62.         // TODO Auto-generated method stub  
  63.         Object result = null;  
  64.         String name = invocation.getArguments()[0].toString();  
  65.         if(!name.equals("admin"))       result = invocation.proceed();  
  66.         else{  
  67.             System.out.println("admin不是学生,不能加入!");  
  68.         }  
  69.         return result;  
  70.     }  
  71.   
  72. }  
  73.   
  74. package com.test;  
  75. import org.springframework.aop.framework.ProxyFactoryBean;  
  76.   
  77. public class AopTest {  
  78.   
  79.     /** 
  80.      * @param args 
  81.      */  
  82.     public static void main(String[] args) {  
  83.         // TODO Auto-generated method stub  
  84.         StudentService service = new StudentServiceImpl();  
  85.         ProxyFactoryBean proxy = new ProxyFactoryBean();  
  86.         try {  
  87.             proxy.setProxyInterfaces(new Class[]{com.test.StudentService.class});  
  88.         } catch (ClassNotFoundException e) {  
  89.             // TODO Auto-generated catch block  
  90.             e.printStackTrace();  
  91.         }  
  92.         proxy.setProxyTargetClass(false);  
  93.         proxy.setTarget(service);  
  94.         proxy.addAdvice(new BeforeAdvice());  
  95.         proxy.addAdvice(new AfterAdvice());  
  96.         proxy.addAdvice(new CompareInterceptor());  
  97.         StudentService s = (StudentService)proxy.getObject();  
  98.         s.addStudent("test");  
  99.         System.out.println("----------------------------");  
  100.         s.addStudent("admin");  
  101.     }  
  102.   
  103. }  

##before -- 方法调入前的操作!
##增加一个姓名是test学生!
##after -- 方法返回之后的操作
----------------------------
##before -- 方法调入前的操作!
admin不是学生,不能加入!
##after -- 方法返回之后的操作

http://blogs.warwick.ac.uk/colinyates/entry/performance_of_spring/

利用 Spring 和 EHCache 缓存结果(翻译)


http://www.blogjava.net/zhenyu/archive/2006/07/05/56849.html
分享到:
评论

相关推荐

    spring aop实现原理

    NULL 博文链接:https://zhang-yingjie-qq-com.iteye.com/blog/319927

    Spring AOP实现机制

    **Spring AOP 实现机制详解** Spring AOP(面向切面编程)是Spring框架的核心特性之一,它允许程序员在不修改源代码的情况下,通过“切面”来插入额外的业务逻辑,如日志、事务管理等。AOP的引入极大地提高了代码的...

    Spring AOP实现 项目源码 Myeclipse 直接导入可用

    **Spring AOP 实现详解** 在Java开发中,Spring框架以其强大的功能和灵活性深受开发者喜爱。其中,AOP(Aspect-Oriented Programming,面向切面编程)是Spring框架的一个重要特性,它允许开发者将关注点从核心业务...

    理解Spring AOP实现与思想 案例代码

    2. **Spring AOP实现方式** - **代理模式**:Spring AOP使用两种代理方式,JDK动态代理和CGLIB代理。如果目标类实现了接口,Spring会使用JDK动态代理;如果没有实现接口,Spring会使用CGLIB代理生成子类。 - **JDK...

    springAOP实现数据字典.zip

    在这个"springAOP实现数据字典.zip"压缩包中,我们主要关注的是如何利用Spring AOP来实现数据字典的功能。数据字典是系统设计中一个关键的组成部分,它存储了系统中所有数据的描述,包括数据项、数据结构、数据流、...

    JAVA 中Spring aop 实现日志记载

    2. **Spring AOP实现日志记载** - **配置Spring AOP**:首先,我们需要在Spring配置文件中启用AOP代理。通常,对于基于注解的配置,会使用`<aop:aspectj-autoproxy>`标签;对于XML配置,可以使用`<aop:config>`和`...

    Spring  AOP实现方法大全

    【Spring AOP实现方法大全】 在Spring框架中,面向切面编程(Aspect-Oriented Programming,简称AOP)是一种强大的设计模式,它允许我们在不修改业务代码的情况下,插入额外的功能,比如日志记录、事务管理等。在...

    Spring框架系列(9) - Spring AOP实现原理详解之AOP切面的实现.doc

    Spring AOP 实现原理详解之 AOP 切面的实现 Spring AOP 是基于 IOC 的 Bean 加载来实现的,本文主要介绍 Spring AOP 原理解析的切面实现过程。AOP 切面的实现是将切面类的所有切面方法根据使用的注解生成对应 ...

    spring aop实现日志功能

    标题"spring aop实现日志功能"涉及到的是如何利用Spring AOP来记录和跟踪应用程序中的操作,这对于调试、性能分析和故障排查至关重要。下面我们将详细探讨如何通过Spring AOP来实现日志功能。 首先,理解AOP的基本...

    spring aop 实现权限的简单示例

    在本示例中,我们将深入探讨如何利用Spring AOP实现简单的权限验证。 首先,AOP的核心概念是切面(Aspect),它封装了横切关注点,比如日志、事务管理、权限验证等。在Spring AOP中,切面通过通知(Advice)来定义...

    Java之Spring AOP 实现用户权限验证

    在本文中,我们将重点探讨如何使用Spring AOP实现用户权限验证。 首先,权限验证是任何应用程序中不可或缺的一部分,尤其是涉及到用户登录和访问控制的场景。通过Spring AOP,我们可以将权限验证的逻辑与业务代码...

    spring aop实现接口参数变更前后对比和日志记录

    spring aop实现接口参数变更前后对比和日志记录完整代码,拿到项目代码,只需要做数据库连接的修改即可运行起来使用,代码案例详细,真是可靠,代码原文地址:...

    SpringAOP实现.docx

    【Spring AOP 实现】 Spring AOP,即Spring的面向切面编程,是一种编程范式,用于处理系统中的横切关注点,如日志、事务管理等,它将这些关注点与业务逻辑分离,提高了代码的可维护性和复用性。AOP在Spring框架中的...

    spring aop实现

    Spring AOP实现详解 在Java开发中,Spring框架以其强大的功能和灵活性被广泛采用,而AOP(面向切面编程)是Spring框架的一个重要组成部分。AOP允许开发者将关注点从核心业务逻辑中分离出来,比如日志记录、权限检查...

    spring aop 自定义注解保存操作日志到mysql数据库 源码

    2、能够清楚的知道如何用spring aop实现自定义注解以及注解的逻辑实现 (需要知道原理的请看spring aop源码,此处不做赘述) 3、可在现有源码上快速进行功能扩展 4、spring boot,mybatis,druid,spring aop的使用

    Spring AOP实现

    Spring AOP(面向切面编程)是Spring框架中的一个重要组件...通过理解advice、pointcut和advisor这三个核心概念,开发者可以更有效地利用Spring AOP实现日志记录、事务管理等各种功能,提高代码的可维护性和可扩展性。

    springAOP实现

    在Spring AOP中,切面可以通过编写带有注解的类或者XML配置来实现。切面通常包括一个或多个通知,以及连接点的定义。 2. **通知(Advice)** 通知是在特定的连接点上执行的代码,它可以是前置通知(Before)、后置...

    Spring AOP 实现

    在这个“Spring AOP 实现”的主题中,我们将深入探讨如何通过注解在Spring中实现AOP,以及如何为AOP通知传递参数。 首先,让我们了解AOP的基本概念。AOP的核心思想是切面(Aspect),它封装了特定的横切关注点。...

    springAOP配置动态代理实现

    动态代理则是Spring AOP实现的核心技术之一,它允许我们在运行时创建具有额外行为的对象。下面将详细阐述Spring AOP的配置以及动态代理的实现。 一、Spring AOP基础知识 1. **什么是AOP**:AOP是一种编程范式,...

    spring aop切面拦截指定类和方法实现流程日志跟踪

    本节将详细介绍如何使用Spring AOP实现流程日志跟踪,主要关注于如何通过AOP拦截特定的类和方法来进行日志记录。 ##### 3.1 配置Spring AOP 在Spring配置文件中定义切面和切入点表达式是非常关键的一步。一般来说...

Global site tag (gtag.js) - Google Analytics