Property Entry Point Resolver定义的entry point指向Mule流程中inbound property中某个指定的property设定的方法名(若是这个property没有在property entry point resolver中指定,将使用默认property名method,不然将使用entry point resolver定义的property名)。java
例如,咱们在自定义Component中定义方法PropertyEntryPointMethod 日志
public class TestComponent { private final Logger logger = LogManager.getLogger(TestComponent.class); public void PropertyEntryPointMethod(String message) { logger.info("PropertyEntryPointMethod's message is:" + message); }
再在Flow的Component标签下指定使用Property Entry Point Resolvercode
<message-properties-transformer doc:name="Message Properties" scope="invocation"> <add-message-property key="method" value="PropertyEntryPointMethod"/> </message-properties-transformer> <property-entry-point-resolver acceptVoidMethods="true" />
因为没有在entry point resolver中指定property名称,在定位entry point时使用了默认的property名method. 所以咱们在前面给这个property设置了咱们设定的方法名PropertyEntryPointMethod(须要保证方法的参数类型和流程传递的Mule Message的Payload类型保持一致,不然仍然会定位失败)。acceptVoidMethod属性为true表示在定义entry point时也查找返回类型为void的方法。orm
实际项目运行时,咱们能够看到PropertyEntryPointMethod方法被执行,输出日志。xml
流程图get
请求画面io
输出日志form
说明一点,设置inbound property咱们这里使用的是Message Properties Transformer控件,也能够在Java代码中定义,或者使用Property控件。使用Property控件设置inbound property的代码以下:class
<set-property propertyName="#[header:INBOUND:method]" value="#['PropertyEntryPointMethod']" doc:name="Property"/>