【问题标题】:Use Camel blueprint property in plain java class在普通 java 类中使用 Camel 蓝图属性
【发布时间】:2018-02-19 11:46:20
【问题描述】:

我已经成功地使用了骆驼路线中的属性。这次我需要从没有定义 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>

这就是我声明我想要在我的班级中使用该值的方式:

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

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

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

【问题讨论】:

    标签: java apache-camel blueprint


    【解决方案1】:

    您可以使用 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;
    }
    

    【讨论】:

    • 谢谢,就是这样!
    猜你喜欢
    • 1970-01-01
    • 2023-03-16
    • 2016-06-29
    • 1970-01-01
    • 1970-01-01
    • 2017-09-17
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    相关资源
    最近更新 更多