spring core proxy : log trace - @Aspect
This commit is contained in:
@@ -1,15 +1,6 @@
|
||||
package com.example.proxy;
|
||||
|
||||
import com.example.proxy.config.AppV1Config;
|
||||
import com.example.proxy.config.AppV2Config;
|
||||
import com.example.proxy.config.v1_proxy.ConcreteProxyConfig;
|
||||
import com.example.proxy.config.v1_proxy.InterfaceProxyConfig;
|
||||
import com.example.proxy.config.v2_dynamicproxy.DynamicProxyBasicConfig;
|
||||
import com.example.proxy.config.v2_dynamicproxy.DynamicProxyFilterConfig;
|
||||
import com.example.proxy.config.v3_proxyfactory.ProxyFactoryConfigV1;
|
||||
import com.example.proxy.config.v3_proxyfactory.ProxyFactoryConfigV2;
|
||||
import com.example.proxy.config.v4_postprocessor.BeanPostProcessorConfig;
|
||||
import com.example.proxy.config.v5_autoproxy.AutoProxyConfig;
|
||||
import com.example.proxy.config.v6_aop.AopConfig;
|
||||
import com.example.proxy.trace.logtrace.LogTrace;
|
||||
import com.example.proxy.trace.logtrace.ThreadLocalLogTrace;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
@@ -25,7 +16,8 @@ import org.springframework.context.annotation.Import;
|
||||
//@Import(ProxyFactoryConfigV1.class)
|
||||
//@Import(ProxyFactoryConfigV2.class)
|
||||
//@Import(BeanPostProcessorConfig.class)
|
||||
@Import(AutoProxyConfig.class)
|
||||
//@Import(AutoProxyConfig.class)
|
||||
@Import(AopConfig.class)
|
||||
@SpringBootApplication(scanBasePackages = "com.example.proxy.app")
|
||||
public class ProxyApplication {
|
||||
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.example.proxy.config.v6_aop;
|
||||
|
||||
import com.example.proxy.config.AppV1Config;
|
||||
import com.example.proxy.config.AppV2Config;
|
||||
import com.example.proxy.config.v6_aop.aspect.LogTraceAspect;
|
||||
import com.example.proxy.trace.logtrace.LogTrace;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Import;
|
||||
|
||||
@Configuration
|
||||
@Import({AppV1Config.class, AppV2Config.class})
|
||||
public class AopConfig {
|
||||
|
||||
@Bean
|
||||
public LogTraceAspect logTraceAspect(LogTrace logTrace) {
|
||||
return new LogTraceAspect(logTrace);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package com.example.proxy.config.v6_aop.aspect;
|
||||
|
||||
import com.example.proxy.trace.TraceStatus;
|
||||
import com.example.proxy.trace.logtrace.LogTrace;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.aspectj.lang.ProceedingJoinPoint;
|
||||
import org.aspectj.lang.annotation.Around;
|
||||
import org.aspectj.lang.annotation.Aspect;
|
||||
|
||||
@Slf4j
|
||||
@Aspect
|
||||
public class LogTraceAspect {
|
||||
|
||||
private final LogTrace logTrace;
|
||||
|
||||
public LogTraceAspect(LogTrace logTrace) {
|
||||
this.logTrace = logTrace;
|
||||
}
|
||||
|
||||
@Around("execution(* com.example.proxy.app..*(..))")
|
||||
public Object execute(ProceedingJoinPoint joinPoint) throws Throwable {
|
||||
TraceStatus status = null;
|
||||
try {
|
||||
String message = joinPoint.getSignature().toShortString();
|
||||
status = logTrace.begin(message);
|
||||
|
||||
Object result = joinPoint.proceed();
|
||||
|
||||
logTrace.end(status);
|
||||
return result;
|
||||
} catch (Exception e) {
|
||||
logTrace.exception(status, e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user