如何从自定义java组件中的上下文属性占位符标记获取属性

时间:2012-09-19 10:05:50

标签: spring mule

我有定义

的Mule配置
<context:property-placeholder location="classpath:/mule-sw.properties"/>

我还有一个Java自定义组件类,在我的一个字段上使用@Lookup注释

@Lookup("file-path")
private String path;

考虑到我的“mule-sw.properties”就像这样

file-path=C:/hello.txt

启动Mule App之后,我总是得到Deploy Exception

org.mule.api.expression.RequiredValueException: "Required object not found in registry of Type "class java.lang.String" with name "file-path" on object "class component.CustomComponent"

我还尝试使用@Lookup(“$ {file-path}”)更改@Lookup(“文件路径”),但没有成功。

任何人都可以给我一个更好的解决方案吗? 非常感谢任何帮助。

谢谢

2 个答案:

答案 0 :(得分:7)

@Lookup注释旨在检索objects from the registry,而您要做的是为自定义组件的属性赋值。

有两种方法可以做到:

1)通过属性注入,即您将组件声明如下:

<custom-component class="org.myCompany.CustomComponent">
    <property name="file-path" value="${file-path}" />
</custom-component>

2)通过Spring EL支持和@Value注释,即您以下列方式注释属性

@Value("${file-path}")
private String path;

我建议使用第一种方法,因为从流程角度来看,它更容易维护

答案 1 :(得分:3)

@Value("#{'${file-path}'}")
private String path;

给它一个机会。我认为您需要将其包装在EL块#{}中才能正确识别。