一个简单的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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ora00904::标识符无效_ora-00911 无效字符

    ora00904::标识符无效_ora-00911 无效字符ORA:即Oracle报错。标识符无效:SQL语句中,这个字段名不在表中。解决方案:修改SQL语句中对应的字段或者修改表里面对应的列名。在这里我想说一下,因为我用的是hibernate内部封装好的save方法,咱也不能去改人家的底层方法是不是,所以我在这里用到一个注解(@Column)去指定SQL要执行的字段我第一次用的时候放在了这里↑但是没什么效果,然后我就把这个注解(@Column)放到getset方法上,问题就解决了。我的问题已经解决,也希望能帮到大家。…

    2022年10月24日
    0
  • php_network_getaddresses: getaddrinfo failed

    php_network_getaddresses: getaddrinfo failed

    2021年11月9日
    39
  • LockWorkStation in Windows 9X/ME/NT/2000

    LockWorkStation in Windows 9X/ME/NT/2000LockWorkStationinWindows9X/ME/NT/2000代码作者:Delphiscn(cnBlaster#sohu.com)http://blog.csdn.net/delphiscn程序原码:http://blog.csdn.net/delphiscn/archive/2005/06/25/403157.aspx在线下载:http://de1phiscn.bokee….

    2022年7月21日
    10
  • 大一vb程序设计基础_大一c语言程序设计答案

    大一vb程序设计基础_大一c语言程序设计答案spContent=50年前,Basic的诞生结束了计算机只能由专业人员使用的历史,推动了计算机的普及。Windows操作系统的出现又将Basic推向一个新的高度——VisualBasic。它是一个以结构化Basic语言为基础、以事件驱动为机制的“可视”的程序设计语言,能够支持多媒体、数据库、网络等应用,可方便、轻松地开发应用软件。——课程团队课程概述虽然VisualBasic推出已经很多年…

    2022年8月31日
    0
  • Object转Map和Map转Object(对象转map,map转对象)

    Object转Map和Map转Object(对象转map,map转对象)第一种方法:fastJosnimportcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.JSONObject;Object转MapFindArchiveDtofindArchiveDto=newFindArchiveDto();findArchiveDto.setContractStatus(“降龙”);…

    2022年4月28日
    434
  • Java 事务注解(注解式事务)

    spring中的@Transactional(rollbackFor=Exception.class)事务处理,当你的方法中抛出异常时,它会将事务回滚,数据库中的数据将不会改变,也就是回到进入此方法前的状态。1 让checked例外也回滚:在整个方法前加上 @Transactional(rollbackFor=Exception.class)2 让uncheck

    2022年4月13日
    51

发表回复

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

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