No Arguments Entry Point Resolver是定位Component類中的無參數方法的.Entry Point Resolver默認會忽略掉繼承自Object類的notify(),toString()等方法。配置No Arguments Entry Point Resolver的代碼以下java
<no-arguments-entry-point-resolver acceptVoidMethods="true" />
若是想排除掉某些方法,能夠使用exclude-entry-point標籤,不過這種狀況下默認對Object類的方法的忽略將會失效,須要添加<exclude-object-methods />節點code
<no-arguments-entry-point-resolver acceptVoidMethods="true"> <exclude-entry-point method="xxxx" /> </no-arguments-entry-point-resolver>
若是想要在指定方法中進行匹配,能夠使用include-entry-point標籤xml
<no-arguments-entry-point-resolver acceptVoidMethods="true"> <include-entry-point method="xxxx" /> </no-arguments-entry-point-resolver>
咱們在TestComponent中添加兩個無參數的方法繼承
public void NoArgumentEntryPointMethod1() { logger.info("NoArgumentEntryPointMethod is executed"); } public void NoArgumentEntryPointMethod2() { logger.info("NoArgumentEntryPointMethod2 is executed"); }
在流程中使用如下配置get
<no-arguments-entry-point-resolver acceptVoidMethods="true" />
啓動項目後,能夠看到因爲有兩個方法匹配,拋出了異常hash
NoArgumentsEntryPointResolver: Found too many possible methodsit
咱們加入exclude-entry-point節點忽略掉NoArgumentEntryMethod1方法io
<no-arguments-entry-point-resolver acceptVoidMethods="true" > <exclude-object-methods /> <exclude-entry-point method="NoArgumentEntryPointMethod1" /> </no-arguments-entry-point-resolver>
這裏若是不加exclude-object-methods節點,會拋出異常class
Found too many possible methods on object "entrypointresolvertest.TestComponent" that accept parameters "{}", Methods matched are "[public void entrypointresolvertest.TestComponent.NoArgumentEntryPointMethod2(), public final void java.lang.Object.wait() throws java.lang.InterruptedException, public java.lang.String java.lang.Object.toString(), public native int java.lang.Object.hashCode(), public final native java.lang.Class java.lang.Object.getClass(), public final native void java.lang.Object.notify(), public final native void java.lang.Object.notifyAll()]"test
從異常信息能夠看出,Object類的一系列無參數方法也進入了匹配方法列表,從而會拋異常。
設置好後再啓動項目,能夠看到NoArgumentEntryMethod2方法被匹配執行
咱們再使用include-entry-point節點,匹配NoArgumentEntryMethod1方法
<no-arguments-entry-point-resolver acceptVoidMethods="true" > <include-entry-point method="NoArgumentEntryPointMethod1"/> </no-arguments-entry-point-resolver>
啓動項目,能夠看到NoArgumentEntryMethod1方法被匹配執行