2

我有定义的骡子配置

<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 应用程序后,我总是得到 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("file-path") ,但没有成功。

谁能给我一个更好的解决方案?任何帮助都将不胜感激。

谢谢

4

2 回答 2

7

@Lookup 注释旨在从注册表中检索对象,而您要做的是将值分配给自定义组件的属性。

有两种方法可以做到这一点:

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;

我推荐第一种方法,因为从流程的角度来看它更容易维护

于 2012-09-19T11:02:34.467 回答
3
@Value("#{'${file-path}'}")
private String path;

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

于 2012-12-10T21:54:34.007 回答