当前位置: 首页 > 知识库问答 >
问题:

注入外部依赖项Spring微服务

苗信鸥
2023-03-14

我们在产品中使用Spring引导微服务,我们有多达10个应用程序。为了记录,我们使用Log4j MDC来生成事务标识,并使用拦截器和过滤器将其传递给服务[超文本传输协议标头]。问题是我们必须在我们所有的应用程序(比如10个)中添加拦截器和过滤器来跟踪这个事务。有没有办法在我们的微服务应用程序中创建jar并注入。

我们能否在所有应用程序中使用最少的代码更改来实现这一点?

共有1个答案

宋臻
2023-03-14

从构建要共享的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 {
  // ...
}

然后配置应用扫描com.me.common.interceptors包以创建bean。没关系代码在罐子里。

在应用程序中,这些bean可以按名称自动连接,并像往常一样注册。

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

@Autowired
@Qualifier(InterceptorConfig .FILTER_BEAN_2)
private HandlerInterceptor interceptor2;
 类似资料:
  • 我有一个正在使用jar的项目a,比如(其中B是在项目a中用作依赖项的另一个项目),现在有一个(类似于缓存),它在映射中保存所需的所有数据。这个映射bean被project(在我的项目中作为包含)使用,即B来读取缓存属性,但我无法这样做,有什么帮助吗? 项目B的webapp-config.xml 上面的bean b2必须在外部项目B中使用(作为jar包含在我的项目A中)。 但我得到了 任何帮助都将不

  • 问题内容: 我想将依赖项注入。但是,我的方法不起作用。我可以看到Spring正在调用我的setter方法,但是稍后在调用when时,该属性为。 这是我的设置: ServletContextListener: web.xml :(这是文件中的最后一个侦听器) applicationContext.xml: 输出: 实现此目的的正确方法是什么? 问题答案: 我通过删除侦听器bean并为我的属性创建了一

  • 我想向Springbean注入一个单例对象依赖关系。问题是我无法访问和修改要注入其对象的类。让我描述一下这个例子。 所以我有我的接口,以及这个接口的实现,如下所示。 然后在我的配置类中,我正在创建一个bean,但是我需要在构造函数中向它传递对象,问题是我不能使成为bean,因为它来自外部包,我不能修改它。 所以我想做的是,能够将/autowire参数传递给bean。目前IntelliJ给我一个错误

  • 问题内容: 我试图将Spring依赖项注入到JPA EntityListener中。这是我的侦听器类: 这是我的Entity类: 但是,我的依赖项(即)始终为null。 问题答案: 注入对无状态bean的依赖关系的一种方法是将依赖关系定义为“静态”,创建一个setter方法,以便Spring可以注入依赖关系(将其分配给静态依赖关系)。 将依赖项声明为静态。 创建一个方法,以便Spring可以注入它

  • 我正在通过添加CDI重构旧模块。 我以 和 为了进行测试,我创建了一个文件: 为了测试它,我正在做这个博客中显示的 和 现在,当我试图测试逻辑时,我做到了 当我运行它时,两个测试属性都是inject,但是我得到了NPE,因为实例中的属性没有被赋值。 为什么Weld不能识别中的属性? JDK 7,焊接2.2.10,Junit 4.12 更新:发布问题后,开始尝试一个更简单、全新的项目(只有两个接口和