Commit cc8120f9 authored by Phillip Webb's avatar Phillip Webb

Use bean classloader for Mongo entity scanning

Fixes gh-3162
parent da5ed8f5
...@@ -22,6 +22,7 @@ import java.util.Collections; ...@@ -22,6 +22,7 @@ import java.util.Collections;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
import org.springframework.beans.factory.BeanClassLoaderAware;
import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -79,7 +80,7 @@ import com.mongodb.Mongo; ...@@ -79,7 +80,7 @@ import com.mongodb.Mongo;
@ConditionalOnClass({ Mongo.class, MongoTemplate.class }) @ConditionalOnClass({ Mongo.class, MongoTemplate.class })
@EnableConfigurationProperties(MongoProperties.class) @EnableConfigurationProperties(MongoProperties.class)
@AutoConfigureAfter(MongoAutoConfiguration.class) @AutoConfigureAfter(MongoAutoConfiguration.class)
public class MongoDataAutoConfiguration { public class MongoDataAutoConfiguration implements BeanClassLoaderAware {
@Autowired @Autowired
private MongoProperties properties; private MongoProperties properties;
...@@ -90,6 +91,13 @@ public class MongoDataAutoConfiguration { ...@@ -90,6 +91,13 @@ public class MongoDataAutoConfiguration {
@Autowired @Autowired
private ResourceLoader resourceLoader; private ResourceLoader resourceLoader;
private ClassLoader classLoader;
@Override
public void setBeanClassLoader(ClassLoader classLoader) {
this.classLoader = classLoader;
}
@Bean @Bean
@ConditionalOnMissingBean @ConditionalOnMissingBean
public MongoDbFactory mongoDbFactory(Mongo mongo) throws Exception { public MongoDbFactory mongoDbFactory(Mongo mongo) throws Exception {
...@@ -151,7 +159,7 @@ public class MongoDataAutoConfiguration { ...@@ -151,7 +159,7 @@ public class MongoDataAutoConfiguration {
for (BeanDefinition candidate : scanner for (BeanDefinition candidate : scanner
.findCandidateComponents(basePackage)) { .findCandidateComponents(basePackage)) {
entitySet.add(ClassUtils.forName(candidate.getBeanClassName(), entitySet.add(ClassUtils.forName(candidate.getBeanClassName(),
MongoDataAutoConfiguration.class.getClassLoader())); this.classLoader));
} }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment