public void register(Object object) {
Multimap
finder.findAllSubscribers(object);
subscribersByTypeLock.writeLock().lock();
try {
subscribersByType.putAll(methodsInListener);
} finally {
subscribersByTypeLock.writeLock().unlock();
}
}
@Override
public Multimap
Multimap
Class> clazz = listener.getClass();
for (Method method : getAnnotatedMethods(clazz)) {
Class>[] parameterTypes = method.getParameterTypes();
Class> eventType = parameterTypes[0];
EventSubscriber subscriber = makeSubscriber(listener, method);
methodsInListener.put(eventType, subscriber);
}
return methodsInListener;
}
发现findAllSubscribers方法中的 Class> clazz = listener.getClass();代码只是获取监听器的class对象,但此时spring已经对该监听器生成了代理类,所以获取到的始终都是proxy,而在这个proxy对象中没有相关的处理方法,所以根本就没有注册成功,所以就进入不了断电了,想修改源代码来支持spring的代理类,还在实践中....
不知道有没有童鞋已经遇到这个问题并有其他的解决方案的没?