|
21 | 21 | import java.util.List; |
22 | 22 | import java.util.concurrent.atomic.AtomicReference; |
23 | 23 |
|
24 | | -import org.springframework.aop.support.AopUtils; |
| 24 | +import org.springframework.aop.framework.AopProxyUtils; |
25 | 25 | import org.springframework.core.annotation.AnnotatedElementUtils; |
26 | 26 | import org.springframework.core.annotation.AnnotationUtils; |
27 | 27 | import org.springframework.integration.annotation.EndpointId; |
|
30 | 30 | import org.springframework.messaging.handler.annotation.Header; |
31 | 31 | import org.springframework.messaging.handler.annotation.Headers; |
32 | 32 | import org.springframework.messaging.handler.annotation.Payload; |
33 | | -import org.springframework.util.ClassUtils; |
34 | 33 | import org.springframework.util.ReflectionUtils; |
35 | 34 | import org.springframework.util.StringUtils; |
36 | 35 |
|
|
42 | 41 | * @author Gunnar Hillert |
43 | 42 | * @author Soby Chacko |
44 | 43 | * @author Artem Bilan |
| 44 | + * |
45 | 45 | * @since 4.0 |
46 | 46 | */ |
47 | 47 | public final class MessagingAnnotationUtils { |
@@ -77,9 +77,9 @@ public static boolean hasValue(Object value) { |
77 | 77 | } |
78 | 78 |
|
79 | 79 | public static Method findAnnotatedMethod(Object target, final Class<? extends Annotation> annotationType) { |
80 | | - final AtomicReference<Method> reference = new AtomicReference<Method>(); |
| 80 | + final AtomicReference<Method> reference = new AtomicReference<>(); |
81 | 81 |
|
82 | | - ReflectionUtils.doWithMethods(getTargetClass(target), |
| 82 | + ReflectionUtils.doWithMethods(AopProxyUtils.ultimateTargetClass(target), |
83 | 83 | method -> reference.compareAndSet(null, method), |
84 | 84 | method -> ReflectionUtils.USER_DECLARED_METHODS.matches(method) && |
85 | 85 | AnnotatedElementUtils.isAnnotated(method, annotationType.getName())); |
@@ -129,20 +129,7 @@ public static String endpointIdValue(Method method) { |
129 | 129 | return endpointId != null ? endpointId.value() : null; |
130 | 130 | } |
131 | 131 |
|
132 | | - private static Class<?> getTargetClass(Object targetObject) { |
133 | | - Class<?> targetClass = targetObject.getClass(); |
134 | | - if (AopUtils.isAopProxy(targetObject)) { |
135 | | - targetClass = AopUtils.getTargetClass(targetObject); |
136 | | - } |
137 | | - else if (ClassUtils.isCglibProxyClass(targetClass)) { |
138 | | - Class<?> superClass = targetObject.getClass().getSuperclass(); |
139 | | - if (!Object.class.equals(superClass)) { |
140 | | - targetClass = superClass; |
141 | | - } |
142 | | - } |
143 | | - return targetClass; |
| 132 | + private MessagingAnnotationUtils() { |
144 | 133 | } |
145 | 134 |
|
146 | | - private MessagingAnnotationUtils() { } |
147 | | - |
148 | 135 | } |
0 commit comments