我有定义
的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(“文件路径”),但没有成功。
任何人都可以给我一个更好的解决方案吗? 非常感谢任何帮助。
谢谢
答案 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块#{}中才能正确识别。