Mehrere Datensätze zur AOP-Ausführungssequenz im Frühjahr

Inhaltsverzeichnis

1. Drei Möglichkeiten, die Ausführungsreihenfolge von AOP zu konfigurieren:

1. Durch die Implementierung der Schnittstelle org.springframework.core.Ordered

2. Bestellhinweise

3. Konfigurationsreihenfolge der Konfigurationsdatei

2. Ausführungsreihenfolge mehrerer AOPs: Je kleiner die Reihenfolge, desto mehr wird zuerst ausgeführt und am Ende endet die erste, die ausgeführt wird


1. Drei Möglichkeiten, die Ausführungsreihenfolge von AOP zu konfigurieren:

1. Durch die Implementierung der Schnittstelle org.springframework.core.Ordered

@Component  
@Aspect  
public class WebLogAspect implements Ordered{
    @Override  
    public int getOrder() {  
        // TODO Auto-generated method stub  
        return 1;  
    }  
      
}  

2. Bestellhinweise

/**
 * 描述: 打印请求和响应信息
 */
@Aspect
@Component
@Order(1)
public class WebLogAspect {

    private final Logger log = LoggerFactory.getLogger(WebLogAspect.class);


    @Pointcut("execution(public * com.imooc.mall.controller.*.*(..)))")
    public void webLog(){

    }

    @Before("webLog()")
    public void doBefore(JoinPoint joinPoint){

        // 收到请求,记录请求内容
        ServletRequestAttributes attributes  =
                (ServletRequestAttributes) RequestContextHolder
                .getRequestAttributes();
        HttpServletRequest request = attributes.getRequest();

        log.info("URL : " + request.getRequestURL().toString());
        log.info("HTTP_METHOD :" + request.getMethod());
        log.info("IP : " + request.getRemoteAddr());
        log.info("CLASS_METHOD : " + joinPoint.getSignature().getDeclaringTypeName() + "."
                + joinPoint.getSignature().getName());
        log.info("ARGS : " + Arrays.toString(joinPoint.getArgs()));
    }


    @AfterReturning(returning = "res", pointcut = "webLog()")
    public void doAfterReturning(Object res) throws JsonProcessingException {
        //处理完请求,返回内容
        log.info("RESPONSE : " + new ObjectMapper().writeValueAsString(res));
    }
}

3. Konfigurationsreihenfolge der Konfigurationsdatei

<aop:config expose-proxy="true">  
    <aop:aspect ref="aopBean" order="0">    
        <aop:pointcut id="testPointcut"  expression="@annotation(xxx.xxx.xxx.annotation.xxx)"/>    
        <aop:around pointcut-ref="testPointcut" method="doAround" />    
        </aop:aspect>    
</aop:config>  

2. Ausführungsreihenfolge mehrerer Aops: Je kleiner die Reihenfolge, desto mehr wird zuerst ausgeführt und am Ende endet die Reihenfolge, in der zuerst ausgeführt wird

Je kleiner der Auftrag, desto mehr Aufträge werden zuerst ausgeführt und derjenige, der zuerst ausgeführt wird, endet am Ende.

Leihen Sie sich die Ikone des Großen Gottes aus:

Spring Aop ist ein konzentrischer Kreis, und die auszuführende Methode ist der Mittelpunkt des Kreises.

Die äußerste Ordnung ist die kleinste.

Führen Sie die doAround-Methode und die doBefore-Methode nacheinander ab der äußersten Reihenfolge AOP1 ———> AOP2 aus.

Führen Sie dann die Methode method aus,

Führen Sie abschließend die Methoden doAfter und doAfterReturn nacheinander in der Reihenfolge AOP2 ———> AOP1 aus.

Das heißt, bei mehreren AOPs muss das Vorher das Nachher sein.

Supongo que te gusta

Origin blog.csdn.net/qq_40963664/article/details/126351532
Recomendado
Clasificación