English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Conselho Around por @Around Anotação de representação. Ela executa antes e após o ponto de conexão. Este é o mais poderoso sugestão. Também oferece mais controle ao usuário final, permitindo que eles manipulem ProceedingJoinPoint.
Vamos implementar sugestões ao redor da aplicação.
Passos1: Abra o Spring Initializr http://start.spring.io .
Passos2: Fornecido GrupoNome. Fornecemos o nome do grupo com.w3codebox.
Passos3: Fornecido Artifact Id.Forneça Artifact Id aop-around-advice-example.
Passos4: Adicionar Spring Web Dependências.
Passos5: Clique GerarBotão. Quando clicamos no botão "Gerar", ele empacota todas as especificações dentro de jar arquivo e baixe-o no sistema local.
O6Passo: ExtrairArquivo jar baixado.
Passos7: Use os seguintes passos para importarPasta:
Arquivo->Importar->Projeto Maven existente->Próximo->Navegue na pasta aop-around-advice-example ->Concluído.
Passos8: Abrir pom.xml Arquivo e adicione o seguinte AOP Dependências. É usado Spring AOP e AspectJ Início da programação 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>
Passos9: 创建名称为 com.w3codebox.service的包。
Passos10: Crie um pacote chamado BankService 的类。
Nesta classe, definimos um método chamado}} método displayBalance(). Verifica o número da conta. Se o número da conta correspondente, retorna o valor total, caso contrário, retorna uma mensagem.
BankService.java
package com.w3codebox.service; import org.springframework.stereotype.Service; @Service public class BankService { public void displayBalance(String accNum) { System.out.println("Inside displayBalance() method"); if(accNum.equals("12345")) { System.out.println("Total balance:") 10,000); } else { System.out.println("Sorry! wrong account number."); } } }
Passos11: Crie outro pacote chamado com.w3codebox.aspect.
Passos12: Crie um pacote chamado Classe BankAspect.
Nas classes a seguir, definimos dois métodos chamados logDisplayingBalance()e 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; //Ativar a funcionalidade AOP do Spring na aplicação @Aspect @Component public class BankAspect { //Mostrar todos os métodos disponíveis, notificar chamadas de todos os métodos @Pointcut(value= "execution(* com.w3codebox.service.BankService.*(..)) private void logDisplayingBalance() { } //declara notificações around aplicadas antes e após a correspondência da expressão de ponto de entrada do método @Around(value= "logDisplayingBalance()") public void aroundAdvice(ProceedingJoinPoint jp) throws Throwable { System.out.println("Método chamado antes do aroundAdvice()") + jp.getSignature().getName() + " method "); try { jp.proceed(); } finally { } System.out.println("Método chamado após o aroundAdvice()") + jp.getSignature().getName() + " method "); } }
Passos13: Abrir AopAroundAdviceExampleApplication.java arquivo e adicione anotações @EnableAspectJAutoProxy。
Esta anotação habilita o suporte para o processamento de componentes marcados com AspectJ @Aspect componentes anotados. Ele é usado juntamente com a anotação @Configuration.
ConfigurableApplicationContext é uma interface, além dos métodos do cliente do contexto de aplicação do ApplicationContext, também oferece ferramentas para configurar o contexto da aplicação.
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); //Obter o objeto employee do contexto da aplicação. BankService bank = context.getBean(BankService.class); //Exibir saldo da conta String accnumber = "12345"; bank.displayBalance(accnumber); //Fechar o objeto context context.close(); } }
Após a criação de todos os pacotes e classes, a estrutura do diretório do projeto será como segue:
Agora, execute a aplicação.
Passos14: Abrir AopAroundAdviceExampleApplication.java E executar a aplicação Java.
No output acima, vimos que o método aroundAdvice() foi chamado duas vezes. Primeiro, na execução displayBalance()Antes do método, em seguida, na execução displayBalance()Depois do método. Chamado de consultoria.