Spring AOP: asesoramiento previo basado en XML

Beforees un tipo de aviso que asegura que un aviso se ejecute antes de la ejecución del método. A continuación se muestra la sintaxis de before advice.

Sintaxis

<aop:config>
   <aop:aspect id = "log" ref = "logging">
      <aop:PointCut id = "PointCut-id" expression = "execution( expression )"/>    
      <aop:before 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á antes de una función llamada.

Para comprender los conceptos mencionados anteriormente relacionados con Before Advice, escribamos un ejemplo, que implementará Before 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
    * before a selected method execution.
    */
   public void beforeAdvice(){
      System.out.println("Going to setup student profile.");
   }   
}

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.getName(..))"/>
         <aop:before PointCut-ref = "selectAll" method = "beforeAdvice"/>
      </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, imprimirá el siguiente mensaje.

Going to setup student profile.
Name : Zara
Age : 11