在普通 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;
}
我已经在 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
注释
@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;
}