Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从camel上下文以编程方式访问camel属性_Java_Spring_Apache Camel - Fatal编程技术网

Java 从camel上下文以编程方式访问camel属性

Java 从camel上下文以编程方式访问camel属性,java,spring,apache-camel,Java,Spring,Apache Camel,我目前正在工作的项目使用camel作为路由框架。 在spring中配置驼峰上下文时,我们传递一个属性文件,其中包含配置驼峰路由或控制运行时行为时所需的一组全局属性: <camel:camelContext xmlns="http://camel.apache.org/schema/spring" id="my-id"> <camel:propertyPlaceholder location="my-system.properties" id="global-proper

我目前正在工作的项目使用camel作为路由框架。 在spring中配置驼峰上下文时,我们传递一个属性文件,其中包含配置驼峰路由或控制运行时行为时所需的一组全局属性:

<camel:camelContext xmlns="http://camel.apache.org/schema/spring" id="my-id">
    <camel:propertyPlaceholder location="my-system.properties" id="global-properties"/>
    ...
</camel:camelContext>
配置路由时,我可以使用
{{foo}
符号访问
foo
属性。使用
@PropertyInject
注释的其他bean也可以使用它。但是,在我的设计中有一个用例,即不是由spring创建的普通POJO(而是一个枚举,但这并不相关)需要访问我的
foo
属性。因为这个POJO将CamelContext作为一个方法参数传递给它,所以我很自然地认为我应该能够从那里获得
foo
的值。然而,我花了一点时间,自己也不知道怎么做


我知道我可以再次加载属性文件,甚至可以获取系统属性
system.getProperty(“bar”)
,一切都可以正常工作,但在我看来这似乎是在作弊。

如果您的POJO不是由SpringContext管理的,我看不到任何自动注入属性的方法。虽然您的方法看起来可能不是最花哨或优雅的,但它的优点是,使用其他注入工具不会给您带来任何开销。

CamelContext上有一个api来解析属性占位符-它是
resolvePropertyPlaceholders
方法:


我不想注射,因为我知道这很难。我只是想从我可用的camel上下文中以编程的方式获取它。这是我在发布本文之前尝试的第一件事。但我看错了文件。我没有调用上下文
resolvePropertyPlaceholders(“{{foo}”)
而是调用
resolvePropertyPlaceholders(“foo”)
,并取回了“foo”字符串。你的回答让我睁大了眼睛,说对了。我不相信这样一个基本的东西会从这个伟大的框架中被遗漏。非常感谢你
my-system.properties
# Global properties that control my-system configuration and run time
...
foo={{bar}} 
...