From 2b2d02eb06bf819bb7b3a9dba17437320fc8c926 Mon Sep 17 00:00:00 2001 From: Victor Bronstein Date: Mon, 8 Dec 2014 11:37:06 +0200 Subject: [PATCH] Optimize predictBeanType implementation Fix triple lookup in the cache --- .../RepositoryInterfaceAwareBeanPostProcessor.java | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/springframework/data/repository/core/support/RepositoryInterfaceAwareBeanPostProcessor.java b/src/main/java/org/springframework/data/repository/core/support/RepositoryInterfaceAwareBeanPostProcessor.java index 17ca5d6bee..27c8034080 100644 --- a/src/main/java/org/springframework/data/repository/core/support/RepositoryInterfaceAwareBeanPostProcessor.java +++ b/src/main/java/org/springframework/data/repository/core/support/RepositoryInterfaceAwareBeanPostProcessor.java @@ -70,18 +70,14 @@ public Class predictBeanType(Class beanClass, String beanName) { return null; } - BeanDefinition definition = context.getBeanDefinition(beanName); - PropertyValue value = definition.getPropertyValues().getPropertyValue("repositoryInterface"); - Class resolvedBeanClass = cache.get(beanName); - - if (cache.containsKey(beanName)) { - return cache.get(beanName); + if (resolvedBeanClass == null) { + BeanDefinition definition = context.getBeanDefinition(beanName); + PropertyValue value = definition.getPropertyValues().getPropertyValue("repositoryInterface"); + resolvedBeanClass = getClassForPropertyValue(value, beanName); + cache.put(beanName, resolvedBeanClass); } - resolvedBeanClass = getClassForPropertyValue(value, beanName); - cache.put(beanName, resolvedBeanClass); - return resolvedBeanClass == Void.class ? null : resolvedBeanClass; }