一个简单的Spring的AOP例子

一个简单的Spring的AOP例子

出处:http://www.blogjava.net/javadragon/archive/2006/12/03/85115.html

 经过这段日子的学习和使用Spring,慢慢地体会到Spring的优妙之处,正在深入地吸收Spring的精华,呵呵。现在写的这个只是个简单AOP例子,包括前置通知,后置通知,环绕通知,和目标对象。写这个例子的主要目标只是想让想学AOP的能更快地入门,了解一下如何去配置AOP里面的东东。
目标对象的接口:IStudent.java

 1 
一个简单的Spring的AOP例子 
/** 
 2 一个简单的Spring的AOP例子 * 
 3 一个简单的Spring的AOP例子  */ 



 4 
一个简单的Spring的AOP例子 
package 
 com.dragon.study;

 5 
一个简单的Spring的AOP例子 

 6 
一个简单的Spring的AOP例子 
/** 
 7 一个简单的Spring的AOP例子 *  @author  dragon
 8 一个简单的Spring的AOP例子 *
 9 一个简单的Spring的AOP例子  */ 



10 
一个简单的Spring的AOP例子 
public 
  
interface 
 IStudent  
{

11 一个简单的Spring的AOP例子    
12 一个简单的Spring的AOP例子     public   void  addStudent(String name);
13 一个简单的Spring的AOP例子} 



14 
一个简单的Spring的AOP例子

目标类:StudentImpl.java

 1 
一个简单的Spring的AOP例子 
/** 
 2 一个简单的Spring的AOP例子 * 
 3 一个简单的Spring的AOP例子  */ 



 4 
一个简单的Spring的AOP例子 
package 
 com.dragon.study.Impl;

 5 
一个简单的Spring的AOP例子 

 6 
一个简单的Spring的AOP例子 
import 
 com.dragon.study.IStudent;

 7 
一个简单的Spring的AOP例子 

 8 
一个简单的Spring的AOP例子 
/** 
 9 一个简单的Spring的AOP例子 *  @author  dragon
10 一个简单的Spring的AOP例子 *
11 一个简单的Spring的AOP例子  */ 



12 
一个简单的Spring的AOP例子 
public 
  
class 
 StudentImpl  
implements 
 IStudent 
{

13 一个简单的Spring的AOP例子 
14 一个简单的Spring的AOP例子       public   void  addStudent(String name) {

15 一个简单的Spring的AOP例子         System.out.println( “ 欢迎  “ + name + “  你加入Spring家庭! “ );
16 一个简单的Spring的AOP例子     } 

17 一个简单的Spring的AOP例子} 



18 
一个简单的Spring的AOP例子

前置通知:BeforeAdvice.java

 1 
一个简单的Spring的AOP例子 
/** 
 2 一个简单的Spring的AOP例子 * 
 3 一个简单的Spring的AOP例子  */ 



 4 
一个简单的Spring的AOP例子 
package 
 com.dragon.Advice;

 5 
一个简单的Spring的AOP例子 

 6 
一个简单的Spring的AOP例子 
import 
 java.lang.reflect.Method;

 7 
一个简单的Spring的AOP例子 

 8 
一个简单的Spring的AOP例子 
import 
 org.springframework.aop.MethodBeforeAdvice;

 9 
一个简单的Spring的AOP例子 

10 
一个简单的Spring的AOP例子 
/** 
11 一个简单的Spring的AOP例子 *  @author  dragon
12 一个简单的Spring的AOP例子 *
13 一个简单的Spring的AOP例子  */ 



14 
一个简单的Spring的AOP例子 
public 
  
class 
 BeforeAdvice  
implements 
 MethodBeforeAdvice 
{

15 一个简单的Spring的AOP例子 
16 一个简单的Spring的AOP例子       public   void  before(Method method,Object[] args, Object target)
17 一个简单的Spring的AOP例子                 throws  Throwable {

18 一个简单的Spring的AOP例子          
19 一个简单的Spring的AOP例子          System.out.println( “ 这是BeforeAdvice类的before方法. “ );
20 一个简单的Spring的AOP例子          
21 一个简单的Spring的AOP例子      } 

22 一个简单的Spring的AOP例子} 



23 
一个简单的Spring的AOP例子



后置通知:AfterAdvice.java

 1
一个简单的Spring的AOP例子
/**
 2一个简单的Spring的AOP例子 * 
 3一个简单的Spring的AOP例子 */



 4
一个简单的Spring的AOP例子
package
 com.dragon.Advice;

 5
一个简单的Spring的AOP例子

 6
一个简单的Spring的AOP例子
import
 java.lang.reflect.Method;

 7
一个简单的Spring的AOP例子

 8
一个简单的Spring的AOP例子
import
 org.springframework.aop.AfterReturningAdvice;

 9
一个简单的Spring的AOP例子

10
一个简单的Spring的AOP例子
/**
11一个简单的Spring的AOP例子 * @author dragon
12一个简单的Spring的AOP例子 *
13一个简单的Spring的AOP例子 */



14
一个简单的Spring的AOP例子
public
 
class
 AfterAdvice 
implements
 AfterReturningAdvice
{

15一个简单的Spring的AOP例子    
16一个简单的Spring的AOP例子    public void afterReturning(Object returnValue ,Method method,
17一个简单的Spring的AOP例子                   Object[] args,Object target) throws Throwable{

18一个简单的Spring的AOP例子        System.out.println(“这是AfterAdvice类的afterReturning方法.“);
19一个简单的Spring的AOP例子    }

20一个简单的Spring的AOP例子      
21一个简单的Spring的AOP例子
22一个简单的Spring的AOP例子}



23
一个简单的Spring的AOP例子


环绕通知:CompareInterceptor.java

 1
一个简单的Spring的AOP例子
/**
 2一个简单的Spring的AOP例子 * 
 3一个简单的Spring的AOP例子 */



 4
一个简单的Spring的AOP例子
package
 com.dragon.Advice;

 5
一个简单的Spring的AOP例子

 6
一个简单的Spring的AOP例子
import
 org.aopalliance.intercept.MethodInterceptor;

 7
一个简单的Spring的AOP例子
import
 org.aopalliance.intercept.MethodInvocation;

 8
一个简单的Spring的AOP例子

 9
一个简单的Spring的AOP例子

10
一个简单的Spring的AOP例子
/**
11一个简单的Spring的AOP例子 * @author dragon
12一个简单的Spring的AOP例子 *
13一个简单的Spring的AOP例子 */



14
一个简单的Spring的AOP例子
public
 
class
 CompareInterceptor 
implements
 MethodInterceptor
{

15一个简单的Spring的AOP例子
16一个简单的Spring的AOP例子      public Object invoke(MethodInvocation invocation) throws Throwable{

17一个简单的Spring的AOP例子          Object result = null;
18一个简单的Spring的AOP例子         String stu_name = invocation.getArguments()[0].toString();
19一个简单的Spring的AOP例子         if ( stu_name.equals(“dragon“)){

20一个简单的Spring的AOP例子             //如果学生是dragon时,执行目标方法,
21一个简单的Spring的AOP例子              result= invocation.proceed();
22一个简单的Spring的AOP例子              
23一个简单的Spring的AOP例子         }
 else{

24一个简单的Spring的AOP例子             System.out.println(“此学生是“+stu_name+“而不是dragon,不批准其加入.“);
25一个简单的Spring的AOP例子         }

26一个简单的Spring的AOP例子        
27一个简单的Spring的AOP例子          return result;
28一个简单的Spring的AOP例子      }

29一个简单的Spring的AOP例子}



30
一个简单的Spring的AOP例子



配置文件applicationContext.xml

 1
一个简单的Spring的AOP例子
<?
xml version=”1.0″ encoding=”UTF-8″
?>


 2
一个简单的Spring的AOP例子
<!
DOCTYPE beans PUBLIC “-//SPRING//DTD BEAN//EN” “http://www.springframework.org/dtd/spring-beans.dtd”
>


 3
一个简单的Spring的AOP例子

 4
一个简单的Spring的AOP例子
<
beans
>


 5
一个简单的Spring的AOP例子

 6
一个简单的Spring的AOP例子
<
bean 
id
=”beforeAdvice”
 class
=”com.dragon.Advice.BeforeAdvice”
></
bean
>


 7
一个简单的Spring的AOP例子
<
bean 
id
=”afterAdvice”
 class
=”com.dragon.Advice.AfterAdvice”
></
bean
>


 8
一个简单的Spring的AOP例子
<
bean 
id
=”compareInterceptor”
 class
=”com.dragon.Advice.CompareInterceptor”
></
bean
>


 9
一个简单的Spring的AOP例子
<
bean 
id
=”studenttarget”
 class
=”com.dragon.study.Impl.StudentImpl”
></
bean
>


10
一个简单的Spring的AOP例子

11
一个简单的Spring的AOP例子
<
bean 
id
=”student”
 class
=”org.springframework.aop.framework.ProxyFactoryBean”
>


12
一个简单的Spring的AOP例子  
<
property 
name
=”proxyInterfaces”
>


13
一个简单的Spring的AOP例子    
<
value
>
com.dragon.study.IStudent
</
value
>


14
一个简单的Spring的AOP例子  
</
property
>


15
一个简单的Spring的AOP例子  
<
property 
name
=”interceptorNames”
>


16
一个简单的Spring的AOP例子    
<
list
>


17
一个简单的Spring的AOP例子     
<
value
>
beforeAdvice
</
value
>


18
一个简单的Spring的AOP例子     
<
value
>
afterAdvice
</
value
>


19
一个简单的Spring的AOP例子    
<
value
>
compareInterceptor
</
value
>
  

20
一个简单的Spring的AOP例子    
</
list
>


21
一个简单的Spring的AOP例子  
</
property
>


22
一个简单的Spring的AOP例子  
<
property 
name
=”target”
>


23
一个简单的Spring的AOP例子    
<
ref 
bean
=”studenttarget”
/>


24
一个简单的Spring的AOP例子  
</
property
>


25
一个简单的Spring的AOP例子

26
一个简单的Spring的AOP例子
</
bean
>


27
一个简单的Spring的AOP例子

28
一个简单的Spring的AOP例子

29
一个简单的Spring的AOP例子

30
一个简单的Spring的AOP例子

31
一个简单的Spring的AOP例子
</
beans
>





  现在开始写测试类,Test.java

 1
一个简单的Spring的AOP例子
/**
 2一个简单的Spring的AOP例子 * 
 3一个简单的Spring的AOP例子 */



 4
一个简单的Spring的AOP例子
package
 com;

 5
一个简单的Spring的AOP例子

 6
一个简单的Spring的AOP例子
import
 org.springframework.context.ApplicationContext;

 7
一个简单的Spring的AOP例子
import
 org.springframework.context.support.FileSystemXmlApplicationContext;

 8
一个简单的Spring的AOP例子

 9
一个简单的Spring的AOP例子
import
 com.dragon.study.IStudent;

10
一个简单的Spring的AOP例子

11
一个简单的Spring的AOP例子
/**
12一个简单的Spring的AOP例子 * @author dragon
13一个简单的Spring的AOP例子 *
14一个简单的Spring的AOP例子 */



15
一个简单的Spring的AOP例子
public
 
class
 Test 
{

16一个简单的Spring的AOP例子
17一个简单的Spring的AOP例子    /**
18一个简单的Spring的AOP例子     * @param args
19一个简单的Spring的AOP例子     */

20一个简单的Spring的AOP例子    public static void main(String[] args) {

21一个简单的Spring的AOP例子        // TODO Auto-generated method stub
22一个简单的Spring的AOP例子      ApplicationContext ctx = 
23一个简单的Spring的AOP例子          new FileSystemXmlApplicationContext(“/com/dragon/applicationContext.xml“);
24一个简单的Spring的AOP例子      
25一个简单的Spring的AOP例子      IStudent person = (IStudent)ctx.getBean(“student“);
26一个简单的Spring的AOP例子      person.addStudent(“dragon“);
27一个简单的Spring的AOP例子      
28一个简单的Spring的AOP例子//      person.addStudent(“javadragon”);
29一个简单的Spring的AOP例子    }

30一个简单的Spring的AOP例子
31一个简单的Spring的AOP例子}



32
一个简单的Spring的AOP例子
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100464.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • jlink烧录教程_自制flash烧录器

    jlink烧录教程_自制flash烧录器本文主要向大家介绍了Flash基础入门之J-Link固件烧录以及使用J-Flash向arm硬件板下载固件程序,通过具体的内容向大家展现,希望对大家学习Flash基础入门有所帮助。一、始于安装新版的MDK5.11a后,J-Link不能使用,提示安装新固件云云用新版本的STM32集成开发环境MDK5.11a(之前用的4.13a)链接J-Link下载程序,如果J-Link固件版本过低则点击J-Link设…

    2022年9月14日
  • windows驱动开发教程_windows内核驱动开发

    windows驱动开发教程_windows内核驱动开发1.前言因工作上项目的需要,笔者需要做驱动相关的开发,之前并没有接触过相关的知识,折腾一段时间下来,功能如需实现了,也积累了一些经验和看法,所以在此做番总结。对于驱动开发的开发指引,微软官方文档网站已经提供了很详细的教程文档,并且在Github上提供了一系列典型的例程源码用于开发人员参考。开发人员在具备一定的驱动概念知识后,通过参考官方例程可以很容易实现拥有特定功能的驱动应用程序。Windows驱动程序入门:Windows驱动程序入门-Windowsdrivers|Micros..

    2022年8月30日
  • leetcode546_leetcode 5

    leetcode546_leetcode 5DescriptionGivenacollectionofdistinctintegers,returnallpossiblepermutations.ExampleInput:[1,2,3]Output:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]…

    2022年9月20日
  • oracle行转列函数 聚合_oracle查询结果行转列

    oracle行转列函数 聚合_oracle查询结果行转列如需转载请标明出处1.使用条件查询查询部门为20的员工列表–查询部门为20的员工列表SELECTt.DEPTNO,t.ENAMEFROMSCOTT.EMPtwheret.DEPTNO=’20’;效果:2.使用listagg()WITHINGROUP()将多行合并成一行(比较常用)SELECT T.DEPTNO, li…

    2022年9月7日
  • nofollow标签浪费了多少站长做外链的时间

    nofollow标签浪费了多少站长做外链的时间

    2021年11月17日
  • tomcat java_tomcat和maven的区别

    tomcat java_tomcat和maven的区别复杂的sql查询环境搭建CREATE TABLE `teacher` ( `id` INT(10) NOT NULL, `name` VARCHAR(30) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=INNODB DEFAULT CHARSET=utf8INSERT INTO teacher(id, name) VALUES (1,’秦老师’); CREATE TABLE `student` ( `id` INT(10) NOT NULL

    2022年8月8日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号