Spring AOP: asesoramiento posterior basado en XML

Afteres un tipo de aviso que garantiza que un aviso se ejecute después de la ejecución del método. A continuación se muestra la sintaxis de after advice.

Sintaxis

<aop:config>
   <aop:aspect id = "log" ref = "logging">
      <aop:PointCut id = "PointCut-id" expression = "execution( expression )"/>    
      <aop:after PointCut-ref = "PointCut-id" method = "methodName"/>
   </aop:aspect>
</aop:config>

Dónde,

  • PointCut-id - id del PointCut.

  • methodName - Nombre del método de la función que se llamará después de una función llamada.

Para comprender los conceptos mencionados anteriormente relacionados con After Advice, escribamos un ejemplo que implementará After Advice. Para escribir nuestro ejemplo con algunos consejos, tengamos un IDE de Eclipse en funcionamiento y usemos los siguientes pasos para crear una aplicación Spring.

Paso Descripción
1 Actualice el proyecto creado por el estudiante en el capítulo Spring AOP - Application .
2 Actualice la configuración del bean y ejecute la aplicación como se explica a continuación.

A continuación se muestra el contenido de Logging.javaarchivo. Esto es en realidad una muestra del módulo de aspecto, que define los métodos que se llamarán en varios puntos.

package com.tutorialspoint;

public class Logging {

   /** 
    * This is the method which I would like to execute
    * after a selected method execution.
    */
   public void afterAdvice(){
      System.out.println("Student profile setup complete.");
   }   
}

A continuación se muestra el contenido de la Student.java archivo.

package com.tutorialspoint;

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();
   }
}

A continuación se muestra el contenido de la MainApp.java archivo.

package com.tutorialspoint;

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.getName();
      student.getAge();     
   }
}

A continuación se muestra el archivo de configuración Beans.xml.

<?xml version = "1.0" encoding = "UTF-8"?>
<beans xmlns = "http://www.springframework.org/schema/beans"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 
   xmlns:aop = "http://www.springframework.org/schema/aop"
   xsi:schemaLocation = "http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
   http://www.springframework.org/schema/aop 
   http://www.springframework.org/schema/aop/spring-aop-3.0.xsd ">

   <aop:config>
      <aop:aspect id = "log" ref = "logging">
         <aop:PointCut id = "selectAll" 
            expression = "execution(* com.tutorialspoint.Student.getAge(..))"/>
         <aop:after PointCut-ref = "selectAll" method = "afterAdvice"/>
      </aop:aspect>
   </aop:config>

   <!-- Definition for student bean -->
   <bean id = "student" class = "com.tutorialspoint.Student">
      <property name = "name"  value = "Zara" />
      <property name = "age"  value = "11"/>      
   </bean>

   <!-- Definition for logging aspect -->
   <bean id = "logging" class = "com.tutorialspoint.Logging"/> 
      
</beans>

Ejecutar proyecto

Una vez que haya terminado de crear archivos fuente y de configuración, ejecute su aplicación. Haga clic derecho en MainApp.java en su aplicación y userun as Java Applicationmando. Si todo está bien con su aplicación, esto imprimirá el siguiente mensaje.

Name : Zara
Age : 11
Student profile setup complete.