Kā lietot Pavasara DebugInterceptor.


Publikācijas datums:2021. gada 19. janvāris.



INFOMARTION > Kā lietot Pavasara DebugInterceptor.

Pārskats.

Šis ir par to, kā izmantot Pavasara DebugInterceptor. Nākamā Pavasara tīmekļa vietne man palīdzēja izprast šo koncepciju, taču bija grūti saprast, ko tieši darīt tikai no tīmekļa vietnes, tāpēc es faktiski pārbaudīju rezultātus.

https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#aop-api

Satura rādītājs

  1. Kas ir DebugInterceptor?
  2. montāža
  3. kopsavilkums

1. Kas ir DebugInterceptor?

DebugInterceptor ir bibliotēka, kas izvada žurnālus ar AOP. Konkrēti, šādas bibliotēkas (jar faili). Versija 5.1.4.

https://mvnrepository.com/artifact/org.springframework/spring-aop/5.1.4.RELEASE

Konkrētais Java fails ir "org.springframework.aop.interceptor.DebugInterceptor".

Īsumā, AOP ir metode apstrādes ievadīšanai instancēs, kas tiek pārvaldītas Spring DI konteinerā. Oficiālais AOP nosaukums ir uz aspektiem orientēta programmēšana.

Šajā gadījumā mēs vēlamies injicēt DebugInterceptor instancē, kas tiek ģenerēta ar @Component.

1-1. īstenošanas vide

Es vēlētos aprakstīt izmantoto Jar un versiju, jo atkarībā no vides var būt nelielas atšķirības.

Pavasara aop versijaspring-aop-5.1.4.RELEASE.jar
Pavasara pupiņu versijaspring-beans-5.1.4.RELEASE.jar
Žurnāla izejas bibliotēkas versijaslf4j-api-1.7.25.jar
logback-core-1.2.3.jar

1-2. Nepieciešamais darbs.

Nepieciešamais darbs ir šāds.

  • Izveidojiet gadījumu ar @Component.
  • AOP definēšana failā applicationContext.xml
  • Žurnāla izejas iestatījumu mainīšana

2. montāža

Tagad es vēlētos to īstenot praksē.

2-1. Izveidojiet gadījumu ar @Component.

Sagatavojiet klasi ar "@Component", kas deklarēta šādi. Izpildiet tikai "return", jo vēlaties redzēt tikai AOP.

TestAop.java


@Component
public class TestAop{
    public void testMethod() {

        return;

    }

}

2-2. AOP definēšana failā applicationContext.xml

Iestatiet AOP, lai ievadītu procesu. Sarkanā krāsā ir atzīmētas jomas, kas attiecas uz AOP.

applicationContext.xml


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:util="http://www.springframework.org/schema/util"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd">
~saīsinājums~
    <!-- Pavasara AOP testēšana. -->
    <bean id="debugInterceptor" class="org.springframework.aop.interceptor.DebugInterceptor" />
    <aop:config>
        <aop:advisor advice-ref="debugInterceptor"
            pointcut="execution(* com.example.TestAop.testMethod(..))"  />
    </aop:config>
</beans>

'pointcut' tiek rakstīts šādi.

pointcut="execution(* paketes nosaukums.klases nosaukums.metodes nosaukums(..))"

Iepriekš minētajā piemērā tas būtu šāds.

・paketes nosaukums:com.example

・klases nosaukums:TestAop

・metodes nosaukums:testMethod

Ja vēlaties to piemērot visām metodēm, piemēro šādus noteikumus.

・pointcut="execution(* com.example.TestAop.*(..))"

2-3. Žurnāla izejas iestatījumu mainīšana

Mainiet žurnālu veidošanas līmeni tikai DebugInterceptor, jo žurnāla izvades līmenis, kas aprakstīts DebugInterceptor, ir "TRACE". Sarkanā krāsā ir norādītas jomas, kas ir jānoregulē. Pārējos iestatījumus var ievadīt patvaļīgi.

logback.xml


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>
<configuration>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern><![CDATA[date:%d{yyyy-MM-dd HH:mm:ss}\tthread:%thread\tX-Track:%X{X-Track}\tlevel:%-5level\tlogger:%-48logger{48}\tmessage:%msg%n]]></pattern>
        </encoder>
    </appender>

    <appender name="APPLICATION_LOG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${app.log.dir:-log}/todo-application.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${app.log.dir:-log}/todo-application-%d{yyyyMMdd}.log</fileNamePattern>
            <maxHistory>7</maxHistory>
        </rollingPolicy>
        <encoder>
            <charset>UTF-8</charset>
            <pattern><![CDATA[date:%d{yyyy-MM-dd HH:mm:ss}\tthread:%thread\tX-Track:%X{X-Track}\tlevel:%-5level\tlogger:%-48logger{48}\tmessage:%msg%n]]></pattern>
        </encoder>
    </appender>

    <logger name="org.springframework.aop.interceptor" level="trace">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="APPLICATION_LOG_FILE" />
    </logger>

    <root level="warn">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="APPLICATION_LOG_FILE" />
    </root>

</configuration>

Veidojot to, es apskatīju dažu citu cilvēku blogus, un daži norādīja, ka izvadei jābūt izvadītai žurnāla līmenī DEBUG, bet "spring-aop-5.1.4.RELEASE.jar" gadījumā šķiet, ka izvade netiek izvadīta, ja vien tā nav žurnāla līmenī TRACE.

Ja konfigurācijai vajadzētu darboties, bet kāda iemesla dēļ žurnāli netiek izvadīti, mēģiniet žurnāla līmeni mainīt uz TRACE.

2-4. Rezultāts.

Ja izsaucat testMethod programmā TestAop.java ar iepriekšminētajiem iestatījumiem, jāparādās šādam logam. Žurnāls ir garš, tāpēc es izdzēsu dažas rindiņas, bet tam vajadzētu izvadīt pa divām rindiņām par ieiešanu un iziešanu, kopā četras rindiņas.

date:2021-01-18 15:26:35	thread:http-nio-8081-exec-3	X-Track:84b8ab0aa6504352a815ce85167a1981	level:TRACE	logger:o.s.aop.interceptor.DebugInterceptor	message:Entering ReflectiveMethodInvocation 
date:2021-01-18 15:26:35	thread:http-nio-8081-exec-3	X-Track:84b8ab0aa6504352a815ce85167a1981	level:TRACE	logger:o.s.aop.interceptor.DebugInterceptor	message:Entering ReflectiveMethodInvocation 
date:2021-01-18 15:26:40	thread:http-nio-8081-exec-3	X-Track:84b8ab0aa6504352a815ce85167a1981	level:TRACE	logger:o.s.aop.interceptor.DebugInterceptor	message:Exiting ReflectiveMethodInvocation 
date:2021-01-18 15:26:40	thread:http-nio-8081-exec-3	X-Track:84b8ab0aa6504352a815ce85167a1981	level:TRACE	logger:o.s.aop.interceptor.DebugInterceptor	message:Exiting ReflectiveMethodInvocation 

3. kopsavilkums

Ja neesat iepazinušies ar DebugInterceptor lietošanu, lūdzu, skatiet to.

Paldies, ka noskatījāties līdz beigām.