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

在外部库构造的对象中访问Spring应用程序上下文

冯新知
2023-03-14
@Component
public class ExampleProducerInterceptor extends ProducerInterceptor<Object, Object> {
  @Autowired
  private Environment environment;
  ...
}
spring:
  kafka:
    properties:
      "interceptor.classes": com.example.ExampleproducerInterceptor

像这样访问应用程序的方法有哪些?例如,我可以向Kafka提供一个委托类来调用那里的默认构造函数吗?

在构造kafka之前,我已经有了一些配置它的代码,所以我也可以在前面修改类名:

@Autowired
private List<ProducerInterceptor> producerInterceptors;

List<String> producerClassNames = producerInterceptors
  .map(Object::getClass)
  .map(Class::getName)
  .map(str -> str + "$enhancedBySpring") // Point to delegate class?
  .collect(Collectors.toList());

共有1个答案

阴靖
2023-03-14

我不确定您的最后一个代码片段试图实现什么。

根据应用程序的复杂性,您可以将ApplicationContext存储在静态“Holder”类或ThreadLocal中,并在第一次调用send()时初始化拦截器或默认CTOR。

public class ContextHolder {

    private static final ApplicationContext context;

...

}

```java
public class ContextHolder {

    private final ThreadLocal<ApplicationContext> contexts = new ThreadLocal<>();

...
 类似资料:
  • 问题内容: 我有一个Spring应用程序,到目前为止运行良好。现在,我希望属性文件位于外部配置文件夹中,而不是在打包的jar中,而无需重新打包即可更改内容。这就是我得到的: 问题答案: 如果将其放置在名为spring的目录中的类路径中的某个位置(相应地更改名称/目录),则可以使用 这将指向web-inf / classes / config / springcontext.properties

  • 问题内容: 问候 , 有什么方法可以将值从web.xml context-param转换为Spring上下文吗? 例如,我将web.xml中的值定义为: 我想将该值分配给bean属性为: 提前致谢? 问题答案: 是的- 本文介绍了详细信息。简而言之,您需要: 然后使用以下属性: 或搭配

  • 我有一些测试(我没有编写它们,我正在维护它们)使用spring ContextConfiguration注释来提供应用程序上下文: 总之,有几个问题。我不太熟悉spring自定义上下文位置,这些位置不指定file:/或classpath:/。这是什么意思?这个测试类路径上有很多同名的资源。都上膛了吗?如果不是,Spring如何知道要加载哪个? 第二,有没有一种方法可以通过编程方式访问以这种方式连接

  • 目前,我们使用Spring 4,有一个Java类加载所有xml配置文件: 根:基本框架 儿童:项目申请服务 子项目:项目申请工作流 子:框架控制器 子:CXF Web应用程序上下文 每个孩子都知道自己父母的想法,一切都很顺利。现在,我必须在Websphere应用服务器上使用IBM EJB与遗留系统进行通信。这个EJB被调用,现在我想使用我们的Spring上下文来获得一些服务。 EJB被定义为 我已

  • 我有一个spring boot应用程序abc.myapp.war,它部署在外部tomcat服务器上。默认情况下,tomcat使用war文件名作为部署的应用程序的上下文路径,因此它变成http://localhost:8080/abc.myapp,但我希望有一个自定义的上下文路径,如http://localhost:8080/abc/myapp。我阅读了其他帖子,他们建议在tomcat的server

  • 问题内容: 我正在编写一个实现以下方法的类: 在这种方法中,我希望使用类似于以下内容的配置文件来构造Spring应用程序上下文: 是否可以在配置文件中引用“ dataSource” bean的任何地方强制Spring使用传递给我的方法的DataSource对象? 问题答案: 我发现两个Spring接口可以用来实现我所需要的。该BeanNameAware接口允许Spring通过调用来告诉一个对象的应