|
25 | 25 |
|
26 | 26 | import org.apache.commons.logging.Log;
|
27 | 27 | import org.apache.commons.logging.LogFactory;
|
28 |
| -import org.springframework.beans.factory.FactoryBean; |
29 | 28 | import org.springframework.beans.factory.config.BeanDefinition;
|
30 | 29 | import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
31 | 30 | import org.springframework.beans.factory.config.DependencyDescriptor;
|
32 | 31 | import org.springframework.beans.factory.parsing.BeanComponentDefinition;
|
33 |
| -import org.springframework.beans.factory.support.AbstractBeanDefinition; |
34 | 32 | import org.springframework.beans.factory.support.AutowireCandidateResolver;
|
35 | 33 | import org.springframework.beans.factory.support.BeanDefinitionBuilder;
|
36 | 34 | import org.springframework.beans.factory.support.BeanDefinitionReaderUtils;
|
37 | 35 | import org.springframework.beans.factory.support.BeanDefinitionRegistry;
|
38 | 36 | import org.springframework.beans.factory.support.DefaultListableBeanFactory;
|
| 37 | +import org.springframework.beans.factory.support.RootBeanDefinition; |
39 | 38 | import org.springframework.context.annotation.ContextAnnotationAutowireCandidateResolver;
|
40 | 39 | import org.springframework.context.support.GenericApplicationContext;
|
41 | 40 | import org.springframework.core.env.Environment;
|
@@ -70,7 +69,6 @@ public class RepositoryConfigurationDelegate {
|
70 | 69 | private static final String REPOSITORY_REGISTRATION = "Spring Data %s - Registering repository: %s - Interface: %s - Factory: %s";
|
71 | 70 | private static final String MULTIPLE_MODULES = "Multiple Spring Data modules found, entering strict repository configuration mode";
|
72 | 71 | private static final String NON_DEFAULT_AUTOWIRE_CANDIDATE_RESOLVER = "Non-default AutowireCandidateResolver (%s) detected. Skipping the registration of LazyRepositoryInjectionPointResolver. Lazy repository injection will not be working";
|
73 |
| - private static final String FACTORY_BEAN_OBJECT_TYPE = FactoryBean.OBJECT_TYPE_ATTRIBUTE; |
74 | 72 |
|
75 | 73 | private static final Log logger = LogFactory.getLog(RepositoryConfigurationDelegate.class);
|
76 | 74 |
|
@@ -183,9 +181,10 @@ public List<BeanComponentDefinition> registerRepositoriesIn(BeanDefinitionRegist
|
183 | 181 | extension.postProcess(definitionBuilder, (AnnotationRepositoryConfigurationSource) configurationSource);
|
184 | 182 | }
|
185 | 183 |
|
186 |
| - AbstractBeanDefinition beanDefinition = definitionBuilder.getBeanDefinition(); |
| 184 | + RootBeanDefinition beanDefinition = (RootBeanDefinition) definitionBuilder.getBeanDefinition(); |
187 | 185 |
|
188 |
| - beanDefinition.setAttribute(FACTORY_BEAN_OBJECT_TYPE, getRepositoryInterface(configuration)); |
| 186 | + beanDefinition.setTargetType(getRepositoryInterface(configuration)); |
| 187 | + // beanDefinition.setAttribute(FACTORY_BEAN_OBJECT_TYPE, getRepositoryInterface(configuration)); |
189 | 188 | beanDefinition.setResourceDescription(configuration.getResourceDescription());
|
190 | 189 |
|
191 | 190 | String beanName = configurationSource.generateBeanName(beanDefinition);
|
@@ -323,7 +322,8 @@ private Class<?> getRepositoryInterface(RepositoryConfiguration<?> configuration
|
323 | 322 | ? ClassUtils.getDefaultClassLoader()
|
324 | 323 | : resourceLoader.getClassLoader();
|
325 | 324 |
|
326 |
| - return ReflectionUtils.loadIfPresent(interfaceName, classLoader); |
| 325 | + return ReflectionUtils.loadIfPresent(interfaceName, |
| 326 | + classLoader != null ? classLoader : getClass().getClassLoader()); |
327 | 327 | }
|
328 | 328 |
|
329 | 329 | /**
|
|
0 commit comments