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

动态属性注入 Apache Camel Bean 中的

施晗昱
2023-03-14

我使用@PropertyInject注释从application.properties文件中获取属性,以便在我的beans中使用。< br >这通常很好,但是现在我需要能够基于一个头值来更改注入的属性。在我的脑海中,它看起来像这样:

@PropertyInject(PROPERTY_NAME)  
private String property;

public void pickProperty(String msgVersion) {
        if (msgVersion.equals("A")) {
            PROPERTY_NAME = "property.firstType.name";  
        } else {
            PROPERTY_NAME = "property.secondType.name";
        }
    }

我已经考虑过只注入两个属性并在主方法中决定使用哪一个,但这似乎是一种迂回的方式,如果添加更多版本,会有点臃肿
有没有简单的方法可以做到这一点?

共有1个答案

朱通
2023-03-14

现在我需要能够根据标头值更改注入的属性

属性和Bean是在应用程序启动时创建的,通常在应用程序运行时不会更改。它们都有应用范围。

另一方面,对于应用程序处理的每条消息,标头值可能会更改。

正如您自己建议的那样:您可以将这两个属性注入到 Bean 中,并提供一个每条消息调用一次的方法以获取正确的值

@PropertyInject(PROPERTY_A)  
private String propertyA;
@PropertyInject(PROPERTY_B)  
private String propertyB;

// called for every message processing
public String pickProperty(@Header("msgVersion") String msgVersion) {
    if (msgVersion.equals("A")) {
        return propertyA;
    } else {
        return propertyB;
    }
}

这根本不是一种解决方法,而只是一种根据输入返回不同结果的方法。

 类似资料:
  • 问题内容: 我想动态地在按钮元素上包含/忽略Disabled属性。我已经看到了许多有关动态属性值的示例,但没有看到属性本身的示例。我有以下渲染功能: 由于有“ {”字符,这将引发分析错误。如何基于AppStore.cartIsEmpty()的(布尔值)结果包含/忽略禁用的属性? 问题答案: 添加可选属性(包括和其他可能要使用的其他属性)的最简洁方法是当前使用JSX传播属性: 通过使用传播属性,您可

  • 在我的microservice Spring Boot项目中,我用@ResponseStatus注释了这个自定义异常: 它工作得很好:当引发异常时,我的控制器返回指定的状态(404),但原因没有得到解决(错误消息是“${message.custom.notFound}”)。 您知道是否有方法将属性文件中的属性注入到此注释中吗? 提前感谢

  • 问题内容: 从属性文件中为最终属性进行Spring注入的一个简单问题。 我有一个属性文件,要在其中存储文件路径。通常,当我使用属性文件时,我会使用类似以下的方法来设置类属性: 然后在我spring.xml我会像这样: 这很好用,很简单,并且使代码简洁美观。但是我不确定在尝试将属性值注入最终类属性时使用的最整洁的模式是什么? 显然是这样的: 不管用。还有另一种方法吗? 问题答案: 将值注入最终字段的

  • 问题内容: 关于从属性文件中为最终属性进行Spring注入的一个简单问题。 我有一个属性文件,要在其中存储文件路径。通常,当我使用属性文件时,我会使用类似以下的方法来设置类属性: 然后在我spring.xml我会像这样: 这样效果很好,很简单,并且使代码更简洁。但是我不确定在尝试将属性值注入最终类属性时使用的最整洁的模式是什么? 显然是这样的: 不管用。还有另一种方法吗? 问题答案: 如果您正在寻

  • 主要内容:构造函数注入,setter 注入,短命名空间注入所谓 Bean 属性注入,简单点说就是将属性注入到 Bean 中的过程,而这属性既可以普通属性,也可以是一个对象(Bean)。 Spring 主要通过以下 2 种方式实现属性注入: 构造函数注入 setter 注入(又称设值注入) 构造函数注入 我们可以通过 Bean 的带参构造函数,以实现 Bean 的属性注入。 使用构造函数实现属性注入大致步骤如下: 在 Bean 中添加一个有参构造函数,构造

  • 我是Spring Security的新手。我看过很多关于如何通过外部属性文件的注释注入值的文章。我尝试了很多方法,但最终都是用java。lang.IllegalArgumentException:无法解析占位符“val.id”异常。 你能给我一些提示如何处理这个例外吗? 我的java类如下所示: 我的属性文件名为val.properties,位于WEB-INF下,其内容为val.id=xyz 我将