2017-11-15 5 views
0

Wir verwenden Federschuh Microservices in unserem Produkt, wir haben bis zu 10 Anwendungen. Um zu protokollieren, verwenden wir Log4j MDC, um eine Transaktions-ID zu erzeugen und sie mit Hilfe von Interzeptoren und Filtern entlang der Dienste [http-Header] weiterzuleiten und es funktioniert gut. Das Problem ist, dass wir Interceptors und Filter in all unseren Anwendungen (zB 10) hinzufügen müssen, um diese Transaktion zu verfolgen. Gibt es eine Möglichkeit, jar und inject in unseren Microservice-Anwendungen zu erstellen.Inject externe Abhängigkeit Feder Microservices

Können wir dies mit minimalen Codeänderungen in allen unseren Anwendungen erreichen?

Antwort

0

Erstellen Sie aus dem Filterprojekt, das ein freigegebenes JAR erstellt, eine Klasse, die von Spring gescannt werden kann, um die Beans mit einem wohldefinierten Namen zu erstellen. Zum Beispiel:

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 { 
    // ... 
} 

Dann configure the app to scan das com.me.common.interceptors Paket, um die Bohnen zu erstellen. Es ist egal, der Code ist in einem Glas.

Innerhalb der App können diese Beans dann automatisch mit Namen und registered as usual.

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

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