spring core proxy : log trace - spring auto proxy creator
This commit is contained in:
@@ -20,6 +20,7 @@ repositories {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation 'org.springframework.boot:spring-boot-starter-web'
|
implementation 'org.springframework.boot:spring-boot-starter-web'
|
||||||
|
implementation 'org.springframework.boot:spring-boot-starter-aop'
|
||||||
compileOnly 'org.projectlombok:lombok'
|
compileOnly 'org.projectlombok:lombok'
|
||||||
annotationProcessor 'org.projectlombok:lombok'
|
annotationProcessor 'org.projectlombok:lombok'
|
||||||
testImplementation 'org.springframework.boot:spring-boot-starter-test'
|
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.ProxyFactoryConfigV1;
|
||||||
import com.example.proxy.config.v3_proxyfactory.ProxyFactoryConfigV2;
|
import com.example.proxy.config.v3_proxyfactory.ProxyFactoryConfigV2;
|
||||||
import com.example.proxy.config.v4_postprocessor.BeanPostProcessorConfig;
|
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.LogTrace;
|
||||||
import com.example.proxy.trace.logtrace.ThreadLocalLogTrace;
|
import com.example.proxy.trace.logtrace.ThreadLocalLogTrace;
|
||||||
import org.springframework.boot.SpringApplication;
|
import org.springframework.boot.SpringApplication;
|
||||||
@@ -23,7 +24,8 @@ import org.springframework.context.annotation.Import;
|
|||||||
//@Import(DynamicProxyFilterConfig.class)
|
//@Import(DynamicProxyFilterConfig.class)
|
||||||
//@Import(ProxyFactoryConfigV1.class)
|
//@Import(ProxyFactoryConfigV1.class)
|
||||||
//@Import(ProxyFactoryConfigV2.class)
|
//@Import(ProxyFactoryConfigV2.class)
|
||||||
@Import(BeanPostProcessorConfig.class)
|
//@Import(BeanPostProcessorConfig.class)
|
||||||
|
@Import(AutoProxyConfig.class)
|
||||||
@SpringBootApplication(scanBasePackages = "com.example.proxy.app")
|
@SpringBootApplication(scanBasePackages = "com.example.proxy.app")
|
||||||
public class ProxyApplication {
|
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