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