Hogyan használjuk a Spring DebugInterceptort.
Megjelenés dátuma:2021. január 19.
INFOMARTION > Hogyan használjuk a Spring DebugInterceptort.
Áttekintés.
Ez a Spring DebugInterceptor használatáról szól. A következő Spring weboldal segített megérteni a koncepciót, de nehéz volt megérteni, hogy mit kell pontosan csinálni csak a weboldalról, így ténylegesen ellenőriztem az eredményeket.
https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#aop-api
Tartalomjegyzék
1. Mi az a DebugInterceptor?
A DebugInterceptor egy olyan könyvtár, amely naplókat ad ki az AOP segítségével. Konkrétan a következő könyvtárak (jar fájlok). 5.1.4. verzió.
https://mvnrepository.com/artifact/org.springframework/spring-aop/5.1.4.RELEASE
A konkrét Java fájl az "org.springframework.aop.interceptor.DebugInterceptor".
Röviden, az AOP egy olyan technika, amely a Spring DI konténerén kezelt példányokba injektálja a feldolgozást. Az AOP hivatalos neve Aspektusorientált programozás.
Ebben az esetben egy DebugInterceptort szeretnénk beilleszteni a @Component által generált példányba.
1-1. végrehajtási környezet
Szeretném leírni a használt Jar-t és verziót, mivel a környezettől függően lehetnek kisebb eltérések.
A tavaszi aop verziója | spring-aop-5.1.4.RELEASE.jar |
---|---|
A tavaszi bab változata | spring-beans-5.1.4.RELEASE.jar |
A napló kimeneti könyvtár verziója | slf4j-api-1.7.25.jar logback-core-1.2.3.jar |
1-2. Szükséges munka.
A szükséges munka a következő.
- Hozzon létre egy példányt a @Component segítségével.
- Az AOP meghatározása az applicationContext.xml-ben
- Napló kimeneti beállítások módosítása
2. szerelés
Most a gyakorlatban szeretném megvalósítani.
2-1. Hozzon létre egy példányt a @Component segítségével.
Készítsünk egy osztályt a következőképpen deklarált "@Component" kifejezéssel. Csak a 'return' parancsot hajtsa végre, mivel csak az AOP-t szeretné látni.
@Component
public class TestAop{
public void testMethod() {
return;
}
}
2-2. Az AOP meghatározása az applicationContext.xml-ben
Állítsa be az AOP-t a folyamat befecskendezéséhez. A piros színnel jelölt területek az AOP szempontjából relevánsak.
<?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">
~rövidítés~
<!-- Spring AOP tesztelés. -->
<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>
A 'pointcut' a következőképpen íródik.
pointcut="execution(* csomag neve.osztály neve.method-name(..))"
A fenti példában ez a következőképpen néz ki.
・csomag neve:com.example
・osztály neve:TestAop
・method-name:testMethod
Ha az összes módszerre alkalmazni szeretné, akkor a következőket kell alkalmazni.
・pointcut="execution(* com.example.TestAop.*(..))"
2-3. Napló kimeneti beállítások módosítása
A naplózási szintet csak a DebugInterceptor esetében változtassa meg, mivel a DebugInterceptorban leírt naplókiadási szint a "TRACE". A piros színnel jelölt területek azok, amelyeket be kell állítani. A többi beállítás tetszőlegesen megadható.
<?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>
Megnéztem néhány más ember blogját, amikor létrehoztam, és néhányan azt állították, hogy a kimenetet DEBUG naplózási szinten kell kiadni, de a 'spring-aop-5.1.4.RELEASE.jar' esetében úgy tűnik, hogy a kimenet nem jelenik meg, hacsak nem a TRACE naplózási szinten van.
Ha a konfigurációnak működnie kellene, de a naplók valamilyen oknál fogva nem jelennek meg, próbálja meg a naplószintet TRACE-re változtatni.
2-4. Eredmény.
Ha a TestAop.java állományban a testMethod-t a fenti beállításokkal hívja meg, a következő naplót kell kiadnia. A napló hosszú, ezért töröltem néhány sort, de a be- és kilépéshez két-két sort kell írnia, összesen négy sort.
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. összefoglaló
Ha nem ismeri a DebugInterceptor használatát, kérjük, olvassa el.
Köszönjük, hogy a végéig figyeltek.