Connaissez - vous l'AOP que vous devez demander à l'entrevue?Comment cela se fait - il au printemps?Démarrer avec le système Linux

Android Martin Jr. 2021-08-19 21:41:46 阅读数:847

connaissez vous aop que vous
  • XML Comment

 Pratique du cas


Mode d'annotation

jar Introduction des coordonnées du paquet


<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.9</version>
</dependency>

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.

beans.xml Configuration

Ajouter un espace de noms


xmlns:aop="http://www.springframework.org/schema/aop"

  • 1.
  • 2.
  • 3.

 http://www.springframework.org/schema/aop

 http://www.springframework.org/schema/aop/spring-aop.xsd


Configuration Aop Agents

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

aop:aspectj-autoproxy/


**Compilation aop Catégorie de mise en œuvre**

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

/**

  • Déclarer l'assemblage de la section

*/

@Component

@Aspect

public class LogCut {

/**
* Définir les points d'entrée Définition des règles de la méthode de correspondance
* Sens de l'expression de la règle de correspondance Interception com.xxx.service Sous le sac. Et sous - sac Toutes les méthodes pour toutes les classes
*/
@Pointcut("execution (* com.xxx.service..*.*(..))")
public void cut(){}
/**
* Déclaration des notifications préalables Et appliquer la notification au point d'entrée défini
* Avant l'exécution de la méthode de classe cible Exécuter la notification
*/
@Before(value="cut()")
public void before(){
System.out.println("Pré - notification.....");
}
/**
* Déclaration retour à la notification Et appliquer la notification au point d'entrée
* La méthode de la classe cible a terminé l'exécution de la notification
*/
@AfterReturning(value="cut()")
public void afterReturning(){
System.out.println("Retour à la notification....");
}
/**
* Déclaration avis Final Et appliquer la notification au point d'entrée
* Si une exception s'est produite lors de l'exécution de la méthode de classe cible Cette notification sera exécutée C'est l'équivalent de finally
*/
@After(value="cut()")
public void after(){
System.out.println(" Avis Final ....");
}
/**
* Déclaration d'un avis d'exception Et appliquer la notification au point d'entrée
* Une exception s'est produite lors de l'exécution de la méthode de classe cible Exécuter la notification
*/
@AfterThrowing(value="cut()",throwing="e")
public void afterThrowing(Exception e){
System.out.println("Avis d'exception.... Exécution de la méthode en cas d'exception à l'exécution :"+e);
}
/**
* Déclaration circulaire Et appliquer la notification au point d'entrée
* Avant et après l'exécution de la méthode Définir le traitement approprié en encerclant la notification
*/
@Around(value="cut()")
public Object around(ProceedingJoinPoint pjp) throws Throwable{
System.out.println("Surround front...");
System.out.println("Notification surround");
System.out.println(pjp.getTarget()+"--"+pjp.getSignature());
Object result=pjp.proceed();//Exécuter la méthode de l'objet cible
System.out.println("Surround back...");
return result;
}

}


**Aop Matching Method Rule expression Language ( Un bref aperçu de )**
Aop Introduction aux expressions pointcut
Exécuter n'importe quelle méthode publique :

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.

execution(public *(…))


Exécuter arbitrairement set Méthodes

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

execution(* set*(…))


Mise en œuvre com.xxx.service N'importe quelle méthode de n'importe quelle classe sous le paquet

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

execution(* com.xxx.service..(…))


Mise en œuvre com.xxx.service Sac Et toute méthode de n'importe quelle classe sous le Sous - paquet

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

execution(* com.xxx.service….(…))


**xml Comment**
** Configurer la section 、 Point d'entrée 、Notification**

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.

<!-- aop Configuration connexe -->

aop:config

<!-- aop Configuration tangente -->
<aop:aspect ref="logCut">
<!-- Définition aop Point d'entrée -->
<aop:pointcut expression="execution (* com.xxx.service..*.*(..))" id="cut"/>
<!-- Configurer les notifications préalables Spécifiez le nom de la méthode de pré - notification Et renvoie à la définition du point d'entrée -->
<aop:before method="before" pointcut-ref="cut"/>
<!-- Configurer les notifications de retour Spécifiez le nom de la méthode de notification de retour Et renvoie à la définition du point d'entrée -->

Enfin

C'est l'apogée des mouvements printaniers de l'or, de l'argent et du , Il y a quelques jours, le petit rédacteur en chef a construit son propre site Web , Et j'ai tout arrangé **【Grande usine Internet de première ligneJavaBase de questions d'entrevue de base+Analyse】:Y compris:JavaBase、Anomalie、Ensemble、Programmation simultanée、JVM、SpringSeau familial、MyBatis、Redis、Base de données、MiddlewareMQ、Dubbo、Linux、Tomcat、ZooKeeper、NettyAttendez un peu!**… Tout a été arrangé et téléchargé sur ** Sur mon dossier Tencent : Cliquez ici pour accéder au portail** Et sera continuellement mis à jour …C'est bon.starUn instant..

image

Copyright:Cet article est[Android Martin Jr.]Établi,Veuillez apporter le lien original pour réimprimer,remercier。 https://fra.fheadline.com/2021/08/20210819214141673X.html