Maison > Java > javaDidacticiel > Explication détaillée des exemples d'implémentation améliorés de Spring basés sur l'aspect

Explication détaillée des exemples d'implémentation améliorés de Spring basés sur l'aspect

Y2J
Libérer: 2017-05-08 15:36:57
original
1762 Les gens l'ont consulté

Cet article présente principalement l'explication détaillée de l'implémentation améliorée de Spring basée sur les annotations Aspect. Il est d'une grande valeur pratique. Les amis qui en ont besoin peuvent se référer à

pour organiser les documents et rechercher le code de Spring. implémentation améliorée basée sur les annotations Aspect, légèrement organisée et rationalisée pour partager

Définir les classes d'entités de base

package com.advice;

/**
 * @author Duoduo
 * @version 1.0
 * @date 2017/4/25 23:41
 */
public class Performer {

  public void doPerform() {
    System.out.println("Performer do perform ....................... ");
  }
}
Copier après la connexion

Définir les classes améliorées basées sur les annotations

package com.advice;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;

/**
 * @author Duoduo
 * @version 1.0
 * @date 2017/4/25 23:42
 */

@Aspect//定义切面
public class Audience {

  //定义切点
  @Pointcut("execution(* com.advice.Performer.doPerform(..))")
  public void doPerform(){}

  @Before("doPerform()")
  public void takeSeas() {
    System.out.println("The audience is taking their seats.");
  }

  @Before("doPerform()")
  public void turnOffPhone() {
    System.out.println("The audience is turn off their cellphone.");
  }

  @AfterReturning("doPerform()")
  public void applaund() {
    System.out.println("CLAP CLAP CLAP CLAP ...");
  }

  @AfterThrowing("doPerform()")
  public void demandRefund() {
    System.out.println("Boo! we want our money back!");
  }

  @Around("doPerform()")
  public void watchPerfomance(ProceedingJoinPoint joinPoint) {

    try {
      Long start = System.currentTimeMillis();

      joinPoint.proceed();

      long end = System.currentTimeMillis();

      System.out.println("The performance took "+(end-start)+" milliseconds");

    } catch (Throwable throwable) {
      throwable.printStackTrace();
    }


  }
}
Copier après la connexion

Spring automatique. configuration du proxy

<!-- aop 增强自动代理 -->
<aop:aspectj-autoproxy/>
<bean id="audience" class="com.advice.Audience"/>
<bean id="performer" class="com.advice.Performer"/>
Copier après la connexion

Test Junit

@Test
  public void testDoPerform() throws Exception {
    ApplicationContext context = new ClassPathXmlApplicationContext("classpath:smart-context.xml");
    //代理为指向Interface的代理
    Performer performer = (Performer) context.getBean("performer");

    System.out.println("+++++++++++++++++++++++++++++++++");
    performer.doPerform();
  }
Copier après la connexion

Résultats des tests

+++++++++++++++++++++++++++++++++
2017-04-26 20:51:16,980 DEBUG [main] (AbstractBeanFactory.java:251) - Returning cached instance of singleton bean &#39;audience&#39;
The audience is taking their seats.
The audience is turn off their cellphone.
Performer do perform ....................... 
The performance took 91 milliseconds
CLAP CLAP CLAP CLAP ...
Copier après la connexion

[Recommandations associées]

1. Java gratuit tutoriel vidéo

2. Manuel de développement Java Alibaba

3 Analyse complète des annotations Java

.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal