English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
After returningEst une suggestion dans Spring AOP, généralement appelée après que le point de connexion ait été exécuté (exécuté). Si une exception est levée, l'appel n'est pas effectué. Nous pouvons utiliser @AfterReturning Les annotations sont mises en œuvre après le retour des suggestions dans l'application. Les annotations marquent les fonctionnalités qui doivent être exécutées avant la méthode couverte par le PointCut.
Après le retour de la suggestion, lorsque la méthode correspondante s'exécute normalement et retourne une valeur, la suggestion est exécutée. Le nom défini dans l'attribut return doit correspondre au nom du paramètre dans la méthode advice. Lorsque la méthode retourne une valeur, cette valeur est transmise en tant que valeur de paramètre correspondante à la méthode de notification.
Permettez-nous d'implémenter les notifications après le retour de l'application.
Étapes1: Ouvrir Spring Initializr http://start.spring.io.
Étapes2: Fournir Groupe Nom. Nous fournissons le nom de groupe com.w3codebox.
Étapes3: Fournit Id d'artefact.Fournir l'Id d'artefact aop-after-returning-advice-example.
Étapes4: Ajouter Spring Web Dépendances.
Étapes5: Cliquez GénérerBouton. Lorsque nous cliquons sur le bouton "Générer", il encapsule toutes les normes. jar 文件中,并将其下载到本地系统。
Étapes6: 提取
第7步: 使用以下步骤导入文件夹:
文件->导入->现有Maven项目->下一步->浏览文件夹 aop-returning-advice-example示例->完成。
Étapes8: Ouvrir pom.xml 文件并添加以下 AOP 依赖项。它是使用 Spring AOP et AspectJ 进行面向方面编程的入门。
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.w3codebox</groupId> <artifactId>aop-after-returning-advice-example</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>aop-after-returning-advice-example</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.2.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <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> </<dependency> </<dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
Étapes9: 在 src/main/java dossier Créer un nom de com.w3codebox.model dans codebox.model.
Étapes10: dans le paquet com.w3Créer un paquet nommé Account du classe.
Dans la classe "Account", effectuez les opérations suivantes:
Défini deux variables de type String accountNumber et accountType . Cliquez-droit sur le fichier-> Source-> Utiliser les champs pour générer le constructeur > Générer Getters.
Cliquez-droit sur le fichier-> Source-> Générer Getters et Setters-> Choisir Getters-> Générer Générer toString()
Cliquez-droit sur le fichier-> Source-> Générer toString()...
Account.java
package com.w3codebox.model; public class Account { private String accountNumber; private String accountType; public Account(String accountNumber, String accountType) { super(); this.accountNumber = accountNumber; this.accountType = accountType; } public String getAccountType() { return accountType; } public String getAccountNumber() { return accountNumber; } @Override public String toString() { return "Account [accountNumber=" + accountNumber+ ", accountType=" + accountType + "]"; } }
Étapes11: Créer un autre nom com.w3Le paquet codebox.service.impl.
Étapes12: 在此程序包中,创建一个名称为 AccountServiceImple的类。
在该类中,我们定义了帐户服务。
AccountServiceImpl。 Java
package com.w3codebox.service.impl; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import org.springframework.stereotype.Service; import com.w3codebox.model.Account; @Service public class AccountServiceImpl implements AccountService { //在 HashMap 中存储帐户细节 private static Map<String,Account> map = null; static { map = new HashMap<>(); //在map中添加帐户详细信息 map.put("M4546779", new Account("10441117000", "Saving Account")); map.put("K2434567", new Account("10863554577", "Current Account")); } @Override public Account getAccountByCustomerId(String customerId) throws Exception { if(customerId ==null) { throw new Exception("Invalid! Customer Id"); } Account account= null; Set<Entry<String, Account>> entrySet = map.entrySet(); for (Entry<String, Account> entry : entrySet) { if(entry.getKey().equals(customerId)) { account= entry.getValue(); } } return account; } }
Étapes13: 在 com.w3codebox.service.impl。包中创建名称为 AccountService 的接口。
AccountService.java
package com.w3codebox.service.impl; import com.w3codebox.model.Account; //正在创建一个接口,如果找不到客户id则引发异常 public interface AccountService { public abstract Account getAccountByCustomerId(String customerId) throws Exception; }
Étapes14: Créer un nom com.w3du paquet codebox.aspect.
Étapes15: dans le paquet com.w3codebox.aspect pour créer un nom AccountAspect du classe.
Dans cette classe, nous utilisons l'annotation @AfterReturning。 Nous avons également défini afterReturningAdvice()méthode.
Remarque: Nous avons défini dans name(account) > returning les propriétés doivent correspondre à méthode advicecorrespondant au nom du paramètre.
AccountAspect.java
package com.w3codebox.aspect; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.Aspect; import org.springframework.stereotype.Component; import com.w3codebox.model.Account; @Aspect @Component public class AccountAspect { //implémentant l'avis après retour @AfterReturning(value="execution("* com.w3codebox.service.impl.AccountServiceImpl.*(..))", returning="account") public void afterReturningAdvice(JoinPoint joinPoint, Account account) { System.out.println("After Returning method:")+joinPoint.getSignature()); System.out.println(account); } }
Étapes16: Ouvrir AopAfterReturningAdviceExampleApplication.java Ajouter l'annotation au fichier @EnableAspectJAutoProxy。
Les annotations supportent le traitement des aspects avec AspectJ @Aspect composants annotés. Il est utilisé conjointement avec l'annotation @Configuration.
nous utilisons l'annotation @EnableAspectJAutoProxy proxyTargetClass propriété. Propriété proxyTargetClass = true nous permet d'utiliser CGLIB (bibliothèque de génération de code) proxy, plutôt que la méthode par défaut de proxy basée sur l'interface JDK.
ConfigurableApplicationContext est une interface, qui, en plus des méthodes client de l'ApplicationContext dans l'application, fournit également des outils pour configurer l'ApplicationContext.
AopAfterReturningAdviceExampleApplication.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.model.Account; import com.w3codebox.service.impl.AccountService; import com.w3codebox.service.impl.AccountServiceImpl; @SpringBootApplication //L'annotation @EnableSpectProxy supporte le traitement des composants marqués avec @Aspect. Elle est similaire aux balises dans la configuration XML. @EnableAspectJAutoProxy(proxyTargetClass=true) public class AopAfterReturningAdviceExampleApplication { public static void main(String[] args) { ConfigurableApplicationContext ac = SpringApplication.run(AopAfterReturningAdviceExampleApplication.class, args); //Obtenez l'objet account à partir du contexte de l'application AccountService accountService = ac.getBean("accountServiceImpl", AccountServiceImpl.class); Account account; try { account = accountService.getAccountByCustomerId("K2434567); if (account != null) System.out.println(account.getAccountNumber())+"\t"+account.getAccountType()); } catch (Exception e) { System.out.println(e.getMessage()); } } }
Après avoir créé tous les classes et les packages, le répertoire du projet est le suivant:
Étapes17: Ouvrir AopAfterReturningAdviceExampleApplication.java Fichier et exécutez-le en tant qu'application Java. Il affiche la sortie, comme suit:
Dans la prochaine section, nous comprendrons après avoir fait des suggestions.