注入外部依赖Spring安装

时间:2017-11-15 16:20:44

标签: java spring-boot jar log4j2 microservices

我们在产品中使用弹簧启动微服务,我们最多有10个应用程序。为了记录,我们使用Log4j MDC生成事务id,并使用拦截器和过滤器将其传递给服务[http headers]并且工作正常。 问题是我们必须在我们的所有应用程序中添加拦截器和过滤器(比如说10)来跟踪这个事务。有没有办法在我们的微服务应用程序中创建jar和inject。

我们可以在所有应用程序中使用最少的代码更改来实现此目的吗?

1 个答案:

答案 0 :(得分:0)

从构建要共享的jar的filters项目中,提供一个可以由Spring扫描的类,以创建具有定义良好的名称的bean。例如:

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

然后configure the app to scan com.me.common.interceptors包来创建bean。代码在罐子里没关系。

在应用程序中,这些bean可以通过名称和registered as usual自动装配。

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

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