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?
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 versioon | spring-aop-5.1.4.RELEASE.jar |
---|---|
Kevadiste ubade versioon | spring-beans-5.1.4.RELEASE.jar |
Logi väljundraamatukogu versioon | slf4j-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.
@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.
<?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.
<?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.
■INFORMATION
Palun klõpsake siin, et minna INFORMATSIOONI pealehele.
■PROFILE
Palun klõpsake siin profiili jaoks.
■Kontaktandmed.
Artikliga seotud päringute korral võtke meiega ühendust siin.