在普通 java class 中使用 Camel 蓝图 属性

Use Camel blueprint property in plain java class

我已经在 Camel 路线中成功使用了属性。这次我需要从辅助 class 中的文件中读取值,该辅助 class 没有定义 Camel 路由。

这是我蓝图的 属性 占位符部分:

<cm:property-placeholder persistent-id="my.package.pph" update-strategy="reload">
    <cm:default-properties>
        <cm:property name="myFile" value="C:\temp\myFile.xml" />
    </cm:default-properties>
</cm:property-placeholder>

这就是我在 class 中声明我想要该值的方式:

<bean id="myConverter" class="my.package.name.MyClass">
    <property name="fileName" value="${myFile}" />
</bean>

然后,在我的class中,我声明了一个与bean中的属性同名的变量,并在Eclipse中生成了getter和setter。变量永远不会从蓝图中获取值。

这可能吗,还是我应该寻找替代方案? 谢谢

您可以使用 PropertyInject 注释

将属性注入 bean
@PropertyInject("myFile")
private String fileName;

有了这个,就不需要执行您在上一个代码块中尝试实现的目标了。

虽然,为了教育,如果你这样做:

<bean id="myConverter" class="my.package.name.MyClass">
    <property name="fileName" value="${myFile}" />
</bean>

您可以像这样获取 bean 中的值:

private String fileName;

public void setFileName(String myFile) {
    this.fileName = myFile;
}