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方法被匹配执行