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"/>