Kuidas kasutada Springi DebugInterceptorit.


Avaldamise kuupäev:19. jaanuar 2021.



INFOMARTION > Kuidas kasutada Springi DebugInterceptorit.

Ülevaade.

See räägib sellest, kuidas kasutada Springi DebugInterceptorit. Järgnev Springi veebileht aitas mul kontseptsioonist aru saada, kuid ainuüksi veebilehe põhjal oli raske aru saada, mida täpselt teha, nii et ma tegelikult kontrollisin tulemusi.

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

Sisukord

  1. Mis on DebugInterceptor?
  2. paigaldus
  3. kokkuvõte

1. Mis on DebugInterceptor?

DebugInterceptor on raamatukogu, mis väljastab logisid AOP abil. Täpsemalt, järgmised raamatukogud (jar-failid). Versioon 5.1.4.

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

Konkreetne Java-fail on "org.springframework.aop.interceptor.DebugInterceptor".

Lühidalt öeldes on AOP tehnika töötlemise süstimiseks Springi DI-konteineris hallatavatesse instantsidesse. AOP ametlik nimetus on Aspect Oriented Programming (aspektipõhine programmeerimine).

Sellisel juhul tahame süstida DebugInterceptori instantsi, mis genereeritakse @Componentiga.

1-1. rakenduskeskkond

Sooviksin kirjeldada kasutatud Jar'i ja versiooni, kuna sõltuvalt keskkonnast võivad olla väikesed erinevused.

Kevadine aop versioonspring-aop-5.1.4.RELEASE.jar
Kevadiste ubade versioonspring-beans-5.1.4.RELEASE.jar
Logi väljundraamatukogu versioonslf4j-api-1.7.25.jar
logback-core-1.2.3.jar

1-2. Vajalik töö.

Vajalik töö on järgmine.

  • Loo instants koos @Componentiga.
  • AOP määratlemine failis applicationContext.xml
  • Logi väljundi seadete muutmine

2. paigaldus

Nüüd tahaksin seda praktikas rakendada.

2-1. Loo instants koos @Componentiga.

Valmistage klass, mille "@Component" on deklareeritud järgmiselt. Täitke ainult 'return', kuna soovite näha ainult AOP-i.

TestAop.java


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

        return;

    }

}

2-2. AOP määratlemine failis applicationContext.xml

Seadistage AOP protsessi süstimiseks. Punase värviga on märgitud need valdkonnad, mis on AOP-ga seotud.

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">
~lühendamine~
    <!-- Kevadine AOP testimine. -->
    <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' on kirjutatud järgmiselt.

pointcut="execution(* paketi nimi.klassi nimi.meetodi nimi(..))"

Ülaltoodud näites oleks see järgmine.

・paketi nimi:com.example

・klassi nimi:TestAop

・meetodi nimi:testMethod

Kui soovite seda kohaldada kõigi meetodite suhtes, kehtib järgmine.

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

2-3. Logi väljundi seadete muutmine

Muutke logimise taset ainult DebugInterceptori jaoks, kuna DebugInterceptori kirjeldatud logiväljundi tase on "TRACE". Punase värviga on need alad, mis tuleb määrata. Ülejäänud seaded saab sisestada suvaliselt.

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>

Ma vaatasin selle loomisel mõnede teiste inimeste blogisid ja mõned väitsid, et väljund tuleks väljastada logi tasemel DEBUG, kuid "spring-aop-5.1.4.RELEASE.jar" puhul tundub, et väljundit ei väljastata, kui see ei ole logi tasemel TRACE.

Kui konfiguratsioon peaks toimima, kuid mingil põhjusel ei väljastata logisid, proovige muuta logide tase TRACE-ks.

2-4. Tulemus.

Kui te kutsute TestAop.java faili testMethod ülaltoodud seadistustega, peaks väljundiks olema järgmine logi. Logi on pikk, nii et ma kustutasin mõned read, kuid see peaks väljastama kaks rida iga sisenemise ja väljumise kohta, kokku neli rida.

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. kokkuvõte

Kui te ei ole tuttav DebugInterceptori kasutamisega, vaadake seda.

Aitäh, et vaatasite kuni lõpuni.