2017-11-15 13 views
0

우리는 우리 제품에 스프링 부트 마이크로 서비스를 사용하고 있으며 최대 10 개의 응용 프로그램을 보유하고 있습니다. 로그하기 위해 우리는 Log4j MDC를 사용하여 트랜잭션 ID를 생성하고 인터셉터와 필터 및 그 잘 작동하는 것을 사용하여 서비스 [http 헤더]를 전달합니다. 문제는이 트랜잭션을 추적하기 위해 모든 애플리케이션 (예 : 10)에 인터셉터와 필터를 추가해야한다는 것입니다. Jar를 작성하고 마이크로 서비스 애플리케이션에 삽입하는 것과 같은 방법이 있습니다.외부 의존성 주입 Spring 마이크로 서비스

모든 응용 프로그램에서 최소한의 코드 변경으로이 기능을 사용할 수 있습니까?

답변

0

공유 할 항아리를 만드는 필터 프로젝트에서 잘 정의 된 이름을 사용하여 Spring에서 스캔 할 수있는 클래스를 제공하십시오. 예를 들어 :

package com.me.common.interceptors; 

public class InterceptorConfig { 
    public static final String INTERCEPTOR_BEAN_1 = "comMeCommonInterceptorsInterceptor1"; 
    public static final String INTERCEPTOR_BEAN_2 = "comMeCommonInterceptorsInterceptor2"; 

    @Bean(name = INTERCEPTOR_BEAN_1) 
    public HandlerInterceptor getInterceptor1() { 
     return new Interceptor1(); 
    } 

    @Bean(name = INTERCEPTOR_BEAN_1) 
    public HandlerInterceptor getInterceptor2() { 
     return new Interceptor2(); 
    } 

} 


public class Interceptor1 implements HandlerInterceptor { 
    // ... 
} 

public class Interceptor2 implements HandlerInterceptor { 
    // ... 
} 

그런 다음 com.me.common.interceptors 패키지는 콩을 만들 수 configure the app to scan. 항아리에있는 코드는 중요하지 않습니다.

해당 응용 프로그램 내에서 해당 빈은 이름으로 자동 연결될 수 있으며 registered as usual입니다.

@Autowired 
@Qualifier(InterceptorConfig .FILTER_BEAN_1) 
private HandlerInterceptor interceptor1; 

@Autowired 
@Qualifier(InterceptorConfig .FILTER_BEAN_2) 
private HandlerInterceptor interceptor2;