English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SpringBoot AOP @Around

El consejo de alrededor por @Around Anotación que indica. Se ejecuta antes y después del punto de conexión. Es la sugerencia más poderosa. También proporciona más control al usuario final, permitiéndoles manejar ProceedingJoinPoint。

Implementemos las sugerencias en torno a la aplicación.

Ejemplo de Spring Boot @Around

Pasos1: Abrir Spring Initializr http://start.spring.io 。

Pasos2: proporciona GrupoNombre. Proporcionamos el nombre del grupo com.w3codebox。

Pasos3: proporciona Artifact Id。Proporcionar Artifact Id aop-around-advice-example。

Pasos4: agregar Spring Web Dependencias.

Pasos5: hacer clic Generarbotón. Al hacer clic en el botón "Generar", envuelve todas las especificaciones en jar archivo y descárguelo en el sistema local.

el6Paso: Extraerel archivo jar descargado.

Pasos7: Siga los siguientes pasos para importarcarpeta:

archivo->Importar->Proyecto Maven existente->Siguiente->Explorar carpeta aop-around-advice-example ->Completado.

Pasos8: Abrir pom.xml archivo y agrega lo siguiente AOP Dependencias. Es el uso Spring AOP y AspectJ Iniciar en la programación orientada a aspectos.

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
</dependencies>

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.w3codebox</groupId>
<artifactId>aop-around-advice-example</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>aop-around-advice-example</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

Pasos9: 创建名称为 com.w3codebox.service的包。

Pasos10: Crear un paquete llamado BankService 的类。

En esta clase, definimos una clase llamada}} método displayBalance(). Verifica el número de cuenta. Si coincide, devuelve el monto total, de lo contrario devuelve un mensaje.

BankService.java

package com.w3codebox.service;
import org.springframework.stereotype.Service;
@Service
public class BankService 
{
public void displayBalance(String accNum) 
{
System.out.println("Dentro del método displayBalance() ");
if(accNum.equals("12345")) 
{
System.out.println("Saldo total:") 10,000");
}
else 
{
System.out.println("¡Lo siento! número de cuenta incorrecto.");
}
}
}

Pasos11: Crear otro paquete llamado com.w3codebox.aspect en el paquete superior.

Pasos12: Crear un paquete llamado la clase BankAspect.

En la siguiente clase, definimos dos clases llamadas logDisplayingBalance()y aroundAdvice()método.

BankAspect.java

package com.w3codebox.aspect;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
//Habilitar la función AOP de spring en la aplicación
@Aspect
@Component
public class BankAspect
{
    //Mostrar todos los métodos disponibles, notificará la llamada a todos los métodos
    @Pointcut(value= "execution(* com.w3codebox.service.BankService.*(..))
    private void logDisplayingBalance() 
    { 
    }
    //declara notificaciones around aplicadas antes y después de que el expresión de punto de corte coincida con el método
    @Around(value= "logDisplayingBalance()")
    public void aroundAdvice(ProceedingJoinPoint jp) throws Throwable 
    {
        System.out.println("Método llamado antes de aroundAdvice()") + jp.getSignature().getName() + " method ");
        try 
        {
            jp.proceed();
        } 
        finally 
        {
        }
        System.out.println("Método llamado después de aroundAdvice()") + jp.getSignature().getName() + " method ");
    }
}

Pasos13: Abrir AopAroundAdviceExampleApplication.java archivos y agregar anotaciones @EnableAspectJAutoProxy。

Esta anotación habilita el soporte para procesar componentes marcados con AspectJ @Aspect componentes anotados. Se utiliza junto con la anotación @Configuration.

ConfigurableApplicationContext es una interfaz, además de proporcionar métodos de cliente del contexto de aplicación de ApplicationContext, también ofrece herramientas para configurar el contexto de aplicación.

AopAroundAdviceExampleApplication.java

package com.w3codebox;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import com.w3codebox.service.BankService;
@SpringBootApplication
//@EnableAspectJAutoProxy 注解支持处理标记为 @Aspect 的组件。它类似于 xml 配置中的标记。
@EnableAspectJAutoProxy
public class AopAroundAdviceExampleApplication 
{
    public static void main(String[] args) 
    {
    ConfigurableApplicationContext context = SpringApplication.run(AopAroundAdviceExampleApplication.class, args);
    //Obtener el objeto employee desde el contexto de la aplicación.
    BankService bank = context.getBean(BankService.class);
    //Mostrar saldo de la cuenta
    String accnumber = "12345";
    bank.displayBalance(accnumber);
    //Cerrar el objeto context
    context.close();
    }
}

Después de crear todos los paquetes y clases, la estructura del directorio del proyecto es la siguiente:

Ahora, ejecutar la aplicación.

Pasos14: Abrir AopAroundAdviceExampleApplication.java Y ejecutar la aplicación Java.

En la salida superior, vimos que el método aroundAdvice() se llama dos veces. Primero, en la ejecución displayBalance()Antes del método, luego, en la ejecución displayBalance()Después del método. Llamado consultivo.