spring core proxy : log trace - spring auto proxy creator
This commit is contained in:
@@ -20,6 +20,7 @@ repositories {
|
||||
|
||||
dependencies {
|
||||
implementation 'org.springframework.boot:spring-boot-starter-web'
|
||||
implementation 'org.springframework.boot:spring-boot-starter-aop'
|
||||
compileOnly 'org.projectlombok:lombok'
|
||||
annotationProcessor 'org.projectlombok:lombok'
|
||||
testImplementation 'org.springframework.boot:spring-boot-starter-test'
|
||||
|
||||
@@ -9,6 +9,7 @@ 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.trace.logtrace.LogTrace;
|
||||
import com.example.proxy.trace.logtrace.ThreadLocalLogTrace;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
@@ -23,7 +24,8 @@ import org.springframework.context.annotation.Import;
|
||||
//@Import(DynamicProxyFilterConfig.class)
|
||||
//@Import(ProxyFactoryConfigV1.class)
|
||||
//@Import(ProxyFactoryConfigV2.class)
|
||||
@Import(BeanPostProcessorConfig.class)
|
||||
//@Import(BeanPostProcessorConfig.class)
|
||||
@Import(AutoProxyConfig.class)
|
||||
@SpringBootApplication(scanBasePackages = "com.example.proxy.app")
|
||||
public class ProxyApplication {
|
||||
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
package com.example.proxy.config.v5_autoproxy;
|
||||
|
||||
import com.example.proxy.config.AppV1Config;
|
||||
import com.example.proxy.config.AppV2Config;
|
||||
import com.example.proxy.config.v3_proxyfactory.advice.LogTraceAdvice;
|
||||
import com.example.proxy.trace.logtrace.LogTrace;
|
||||
import org.springframework.aop.Advisor;
|
||||
import org.springframework.aop.aspectj.AspectJExpressionPointcut;
|
||||
import org.springframework.aop.support.DefaultPointcutAdvisor;
|
||||
import org.springframework.aop.support.NameMatchMethodPointcut;
|
||||
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 AutoProxyConfig {
|
||||
|
||||
// @Bean
|
||||
public Advisor advisor1(LogTrace logTrace) {
|
||||
NameMatchMethodPointcut pointcut = new NameMatchMethodPointcut();
|
||||
pointcut.setMappedNames("request*", "order*", "save*");
|
||||
|
||||
LogTraceAdvice advice = new LogTraceAdvice(logTrace);
|
||||
return new DefaultPointcutAdvisor(pointcut, advice);
|
||||
}
|
||||
|
||||
// @Bean
|
||||
public Advisor advisor2(LogTrace logTrace) {
|
||||
AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut();
|
||||
pointcut.setExpression("execution(* com.example.proxy.app..*(..))");
|
||||
|
||||
LogTraceAdvice advice = new LogTraceAdvice(logTrace);
|
||||
return new DefaultPointcutAdvisor(pointcut, advice);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Advisor advisor3(LogTrace logTrace) {
|
||||
AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut();
|
||||
pointcut.setExpression("execution(* com.example.proxy.app..*(..)) && !execution(* com.example.proxy.app..noLog(..))");
|
||||
|
||||
LogTraceAdvice advice = new LogTraceAdvice(logTrace);
|
||||
return new DefaultPointcutAdvisor(pointcut, advice);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user