Springin DebugInterceptorin käyttö.
Julkaisupäivä:19. tammikuuta 2021.
INFOMARTION > Springin DebugInterceptorin käyttö.
Yleiskatsaus.
Tässä käsitellään Springin DebugInterceptorin käyttöä. Seuraava Spring-sivusto auttoi minua ymmärtämään konseptin, mutta oli vaikea ymmärtää, mitä tarkalleen ottaen pitäisi tehdä pelkän sivuston perusteella, joten tarkistin itse tulokset.
https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#aop-api
Sisällysluettelo
1. Mikä on DebugInterceptor?
DebugInterceptor on kirjasto, joka tuottaa lokit AOP:n avulla. Erityisesti seuraavat kirjastot (jar-tiedostot). Versio 5.1.4.
https://mvnrepository.com/artifact/org.springframework/spring-aop/5.1.4.RELEASE
Erityinen Java-tiedosto on "org.springframework.aop.interceptor.DebugInterceptor".
Lyhyesti sanottuna AOP on tekniikka, jolla prosessointia voidaan lisätä Springin DI-säiliössä hallinnoituihin instansseihin. AOP:n virallinen nimi on Aspect Oriented Programming.
Tässä tapauksessa haluamme lisätä DebugInterceptorin instanssiin, jonka @Component luo.
1-1. toteutusympäristö
Haluaisin kuvata käytetyn purkin ja version, koska niissä voi olla pieniä eroja ympäristöstä riippuen.
Kevään aop-versio | spring-aop-5.1.4.RELEASE.jar |
---|---|
Versio kevätpavuista | spring-beans-5.1.4.RELEASE.jar |
Lokitulostuskirjaston versio | slf4j-api-1.7.25.jar logback-core-1.2.3.jar |
1-2. Tarvittava työ.
Tarvittavat työt ovat seuraavat.
- Luo instanssi @Componentilla.
- AOP:n määrittely applicationContext.xml-tiedostossa
- Lokitulostusasetusten muuttaminen
2. asennus
Nyt haluaisin toteuttaa sen käytännössä.
2-1. Luo instanssi @Componentilla.
Valmistele luokka, jonka "@Component" on ilmoitettu seuraavasti. Suorita vain 'return', koska haluat nähdä vain AOP:n.
@Component
public class TestAop{
public void testMethod() {
return;
}
}
2-2. AOP:n määrittely applicationContext.xml-tiedostossa
Määritä AOP prosessin käynnistämistä varten. Punaisella on merkitty ne alueet, joilla on merkitystä AOP:n kannalta.
<?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">
~lyhennelmä~
<!-- Spring AOP -testaus. -->
<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' kirjoitetaan seuraavasti.
pointcut="execution(* paketin nimi.luokan nimi.method-name(..))"
Yllä olevassa esimerkissä se olisi seuraava.
・paketin nimi:com.example
・luokan nimi:TestAop
・method-name:testMethod
Jos haluat soveltaa sitä kaikkiin menetelmiin, toimitaan seuraavasti.
・pointcut="execution(* com.example.TestAop.*(..))"
2-3. Lokitulostusasetusten muuttaminen
Muuta lokitustasoa vain DebugInterceptorissa, sillä DebugInterceptorissa kuvattu lokitulostuksen taso on "TRACE". Punaisella merkityt alueet on asetettava. Muut asetukset voidaan syöttää mielivaltaisesti.
<?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>
Katsoin joidenkin muiden blogeja sitä luodessani, ja joissakin todettiin, että tulosteet pitäisi tulostaa lokitasolla DEBUG, mutta "spring-aop-5.1.4.RELEASE.jar" tapauksessa näyttää siltä, että tulosteet eivät tulostu, ellei se ole lokitasolla TRACE.
Jos asetusten pitäisi toimia, mutta jostain syystä lokit eivät tulostu, yritä vaihtaa lokitasoksi TRACE.
2-4. Tulos.
Jos kutsut TestAop.java-tiedoston testMethod-menetelmää, kun edellä mainitut asetukset on suoritettu, seuraava loki pitäisi tulostua. Loki on pitkä, joten poistin muutaman rivin, mutta sen pitäisi tulostaa kaksi riviä kullekin Entering- ja Exiting-ohjelmalle, yhteensä neljä riviä.
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. yhteenveto
Jos et tunne DebugInterceptorin käyttöä, tutustu siihen.
Kiitos, että katsoitte loppuun asti.
■INFORMATION
Klikkaa tästä siirtyäksesi TIETOJEN yläsivulle.
■PROFILE
Klikkaa tästä saadaksesi profiilin.
■Yhteystiedot.