Spring AOP - Basato su XML dopo la restituzione del consiglio

Afterè un tipo di avviso che garantisce che un avviso venga eseguito dopo l'esecuzione del metodo solo se il metodo viene completato correttamente. Di seguito è riportata la sintassi di after Advice.

Sintassi

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

Dove,

  • PointCut-id - id del PointCut.

  • methodName - Nome del metodo della funzione da chiamare dopo che una funzione chiamata viene restituita correttamente.

Per comprendere i concetti sopra menzionati relativi ai consigli dopo il reso, scriviamo un esempio che implementerà i consigli dopo il reso. Per scrivere il nostro esempio con pochi consigli, disponiamo di un IDE Eclipse funzionante e utilizziamo i seguenti passaggi per creare un'applicazione Spring:

Passo Descrizione
1 Aggiorna il progetto Studente creato nel capitolo Spring AOP - Applicazione .
2 Aggiorna la configurazione del bean ed esegui l'applicazione come spiegato di seguito.

Di seguito è riportato il contenuto di Logging.javafile. Questo è in realtà un esempio di modulo di aspetto, che definisce i metodi da chiamare in vari punti.

package com.tutorialspoint;

public class Logging {

   /** 
    * This is the method which I would like to execute
    * when any method returns.
    */
   public void afterReturningAdvice(Object retVal){
      System.out.println("Returning:" + retVal.toString() );
   }
}

Di seguito è riportato il contenuto del file Student.java file.

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 );
      System.out.println("Exception raised");
      throw new IllegalArgumentException();
      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();
   }
}

Di seguito è riportato il contenuto del file MainApp.java file.

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

Di seguito è riportato il file di configurazione 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.*.*(..))"/>
         <aop:after-returning PointCut-ref = "selectAll" 
            method = "afterReturningAdvice" returning = "retVal"/>         
      </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>

Esegui progetto

Dopo aver creato i file di origine e di configurazione, eseguire l'applicazione. Fare clic con il tasto destro su MainApp.java nell'applicazione e utilizzarerun as Java Applicationcomando. Se tutto va bene con la tua applicazione, verrà stampato il seguente messaggio.

Name : Zara
Returning : Name
Age : 11
Exception raised