我们在产品中使用弹簧启动微服务,我们最多有10个应用程序。为了记录,我们使用Log4j MDC生成事务id,并使用拦截器和过滤器将其传递给服务[http headers]并且工作正常。 问题是我们必须在我们的所有应用程序中添加拦截器和过滤器(比如说10)来跟踪这个事务。有没有办法在我们的微服务应用程序中创建jar和inject。
我们可以在所有应用程序中使用最少的代码更改来实现此目的吗?
答案 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;