/**
* Finds {@link InjectionMetadata.InjectedElement} Metadata from annotated {@link Reference @Reference} methods
*
* @param beanClass The {@link Class} of Bean
* @return non-null {@link List}
*/
private List<InjectionMetadata.InjectedElement> findMethodReferenceMetadata(final Class<?> beanClass) {
final List<InjectionMetadata.InjectedElement> elements = new LinkedList<InjectionMetadata.InjectedElement>();
ReflectionUtils.doWithMethods(beanClass, new ReflectionUtils.MethodCallback() {
@Override
public void doWith(Method method) throws IllegalArgumentException, IllegalAccessException {
Method bridgedMethod = BridgeMethodResolver.findBridgedMethod(method);
if (!BridgeMethodResolver.isVisibilityBridgeMethodPair(method, bridgedMethod)) {
return;
}
Reference reference = findReferenceAnnotation(bridgedMethod);
if (reference != null && method.equals(ClassUtils.getMostSpecificMethod(method, beanClass))) {
if (Modifier.isStatic(method.getModifiers())) {
if (logger.isWarnEnabled()) {
logger.warn("@Reference annotation is not supported on static methods: " + method);
}
return;
}
if (method.getParameterTypes().length == 0) {
if (logger.isWarnEnabled()) {
logger.warn("@Reference annotation should only be used on methods with parameters: " +
method);
}
}
PropertyDescriptor pd = BeanUtils.findPropertyForMethod(bridgedMethod, beanClass);
elements.add(new ReferenceMethodElement(method, pd, reference));
}
}
});
return elements;
}
ReferenceAnnotationBeanPostProcessor.java 文件源码
java
阅读 27
收藏 0
点赞 0
评论 0
项目:dubbo2.js
作者:
评论列表
文章目录