Kaip naudoti "Spring" DebugInterceptor.
Paskelbimo data:2021 m. sausio 19 d.
INFOMARTION > Kaip naudoti "Spring" DebugInterceptor.
Apžvalga.
Tai apie tai, kaip naudoti "Spring" DebugInterceptor. Toliau pateikta "Spring" svetainė padėjo man suprasti šią koncepciją, tačiau vien iš svetainės buvo sunku suprasti, ką tiksliai daryti, todėl iš tikrųjų patikrinau rezultatus.
https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#aop-api
Turinys
1. Kas yra DebugInterceptor?
DebugInterceptor yra biblioteka, kuri išveda žurnalus pagal AOP. Konkrečiai šios bibliotekos (jar failai). 5.1.4 versija.
https://mvnrepository.com/artifact/org.springframework/spring-aop/5.1.4.RELEASE
Konkretus "Java" failas yra "org.springframework.aop.interceptor.DebugInterceptor".
Trumpai tariant, AOP - tai apdorojimo įvedimo į "Spring" DI konteinerio valdomus egzempliorius metodas. Oficialus AOP pavadinimas - į aspektus orientuotas programavimas.
Šiuo atveju norime įterpti DebugInterceptor į egzempliorių, kurį generuoja @Component.
1-1. įgyvendinimo aplinka
Norėčiau aprašyti naudojamą Jar ir versiją, nes priklausomai nuo aplinkos gali būti nedidelių skirtumų.
Pavasario aop versija | spring-aop-5.1.4.RELEASE.jar |
---|---|
Pavasarinių pupelių versija | spring-beans-5.1.4.RELEASE.jar |
Žurnalo išvesties bibliotekos versija | slf4j-api-1.7.25.jar logback-core-1.2.3.jar |
1-2. Reikalingas darbas.
Reikia atlikti šiuos darbus.
- Sukurkite egzempliorių su @Component.
- AOP apibrėžimas applicationContext.xml
- Žurnalo išvesties nustatymų keitimas
2. montavimas
Dabar norėčiau tai įgyvendinti praktiškai.
2-1. Sukurkite egzempliorių su @Component.
Paruoškite klasę su "@Component", deklaruojamą taip. Vykdykite tik "return", nes norite matyti tik AOP.
@Component
public class TestAop{
public void testMethod() {
return;
}
}
2-2. AOP apibrėžimas applicationContext.xml
Nustatykite AOP, kad procesas būtų įvestas. Raudonai pažymėtos tos sritys, kurios yra susijusios su AOP.
<?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">
~sutrumpinimas~
<!-- Pavasario AOP testavimas. -->
<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" rašomas taip.
pointcut="execution(* pakuotės pavadinimas.klasės pavadinimas.metodo pavadinimas(..))"
Pirmiau pateiktame pavyzdyje jis būtų toks.
・pakuotės pavadinimas:com.example
・klasės pavadinimas:TestAop
・metodo pavadinimas:testMethod
Jei norite jį taikyti visiems metodams, taikomos šios nuostatos.
・pointcut="execution(* com.example.TestAop.*(..))"
2-3. Žurnalo išvesties nustatymų keitimas
Pakeiskite tik DebugInterceptor registravimo lygį, nes DebugInterceptor aprašytas žurnalo išvesties lygis yra "TRACE". Raudona spalva pažymėtos sritys, kurias reikia nustatyti. Likusius nustatymus galima įvesti savavališkai.
<?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>
Aš pažvelgiau į kai kurių kitų žmonių tinklaraščius jį kuriant, ir kai kurie teigė, kad išvestis turėtų būti išvesta žurnalo lygiu DEBUG, tačiau "spring-aop-5.1.4.RELEASE.jar" atveju atrodo, kad išvestis nėra išvesta, nebent ji yra žurnalo lygiu TRACE.
Jei konfigūracija turėtų veikti, bet dėl kokių nors priežasčių žurnalai neišvedami, pabandykite pakeisti žurnalo lygį į TRACE.
2-4. Rezultatas.
Jei iškviesite TestAop.java testMethod su pirmiau nurodytais nustatymais, turėtų būti išvestas toks žurnalas. Žurnalas yra ilgas, todėl ištryniau kelias eilutes, tačiau jis turėtų išvesti po dvi eilutes, skirtas įėjimui ir išėjimui, iš viso keturias eilutes.
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. santrauka
Jei nesate susipažinę su "DebugInterceptor" naudojimu, žr.
Dėkojame, kad žiūrėjote iki pabaigos.
■INFORMATION
Spustelėkite čia, kad pereitumėte į viršutinį puslapį su informacija.
■PROFILE
Spustelėkite čia, kad pamatytumėte profilį.
■Kontaktinė informacija.
Jei turite klausimų apie straipsnį, susisiekite su mumis čia.