开发手册 欢迎您!
软件开发者资料库

Spring AOP - 基于XML的投掷建议

Spring AOP XML基于投入建议 - 学习Spring AOP框架,简单易行,从基本到高级概念,包括概述,环境设置,核心概念,建议类型,实现,代理,自定义注释,基于XML的配置,应用程序, PointCut方法,建议之前,建议后,返回建议后,投掷建议后,围绕Aspect,基于注释的配置。

投掷后是一种通知类型,它确保在方法执行后运行通知,只有当方法通过抛出异常退出时才会运行.以下是投掷后建议的语法.

语法

                      

其中,

  • PointCut -id :  PointCut的ID.

  • ex : 抛出异常.

  • methodName : 当被调用函数抛出异常并退出时要调用的函数的方法名称.

要理解上述相关的概念在投掷建议之后,让我们编写一个实施After Throwing Advice的示例.要编写我们的示例并提供一些建议,让我们使用一个可用的Eclipse IDE并使用以下步骤创建一个Spring应用程序 :

Step描述
1更新项目学生根据章节 Spring AOP  - 应用程序创建.
2更新bean配置并运行应用程序,如下所述.

以下是 Logging.java 文件的内容.这实际上是方面模块的一个示例,它定义了在不同点调用的方法.

  package com.it1352; public class Logging {   /**    * This is the method which I would like to execute    * if there is an exception raised.    */   public void afterThrowingAdvice(IllegalArgumentException ex) {      System.out.println("There has been an exception: " + ex.toString());      } }

以下是 Student.java 文件的内容.

package com.it1352; public class Student {   private Integer age;   private String name;   public void setAge(Integer age) {      this.age = age;   }   public Integer getAge() {      System.out.println("Age : " + age );  return age;   }   public void setName(String name) {      this.name = name;   }      public String getName() {      System.out.println("Name : " + name );      return name;   }      public void printThrowException(){      System.out.println("Exception raised");      throw new IllegalArgumentException();   }}

以下是 MainApp.java 文件的内容.

package com.it1352; import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class MainApp {   public static void main(String[] args) {      ApplicationContext context =          new ClassPathXmlApplicationContext("Beans.xml");      Student student = (Student) context.getBean("student");      student.printThrowException();        }}

以下是配置文件 Beans.xml .

                                                                                     

运行项目

完成源文件和配置文件的创建后,运行您的应用程序.右键单击应用程序中的MainApp.java,然后使用 run as Java Application 命令.如果您的应用程序一切正常,它将打印以下消息.

Exception raisedThere has been an exception: java.lang.IllegalArgumentExceptionException in thread "main" java.lang.IllegalArgumentException   at com.it1352.Student.printThrowException(Student.java:25)   at com.it1352.Student$$FastClassBySpringCGLIB$$7dc55815.invoke(>)   at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)   at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:717)   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)   at org.springframework.aop.aspectj.AspectJAfterThrowingAdvice.invoke(AspectJAfterThrowingAdvice.java:58)   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)   at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)   at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:653)   at com.it1352.Student$$EnhancerBySpringCGLIB$$8514cd8.printThrowException()   at com.it1352.MainApp.main(MainApp.java:15)