[英]While migrating Springboot from 2.1.0 to 2.2.1 having Mongo error
Springboot Version 2.2.1 While migrating from 2.1.0 Springboot 版本 2.2.1 从 2.1.0 迁移时
Caused by: java.lang.NullPointerException at org.springframework.data.mongodb.core.MongoTemplate.potentiallyConvertRuntimeException(MongoTemplate.java:2902) at org.springframework.data.mongodb.core.MultiTenancyMongoTemplate.execute(MultiTenancyMongoTemplate.java:81) at org.springframework.data.mongodb.core.MultiTenancyMongoTemplate.execute(MultiTenancyMongoTemplate.java:54) at org.springframework.data.mongodb.core.DefaultIndexOperations.execute(DefaultIndexOperations.java:214) at org.springframework.data.mongodb.core.DefaultIndexOperations.ensureIndex(DefaultIndexOperations.java:121) at org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexCreator.createIndex(MongoPersistentEntityIndexCreator.java:158) at org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexCreator.checkForAndCreateIndexes(MongoPersistentEntityIndexCreator.java:148) at org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexCreator.checkForIndexes(MongoPersistentEntityInde
引起: org.springframework.data.mongodb.core.MongoTemplate.potentiallyConvertRuntimeException(MongoTemplate.java:2902) 处的 java.lang.NullPointerException 在 org.springframework.data.mongodb.core.MultiTenancyMongoTemplate.execute(MultiTenancyMongoTemplate.java:81)在 org.springframework.data.mongodb.core.MultiTenancyMongoTemplate.execute(MultiTenancyMongoTemplate.java:54) 在 org.springframework.data.mongodb.core.DefaultIndexOperations.execute(DefaultIndexOperations.java:214) 在 org.springframework.data.mongodb .core.DefaultIndexOperations.ensureIndex(DefaultIndexOperations.java:121) 位于 org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexCreator.createIndex(MongoPersistentEntityIndexCreator.java:158) 位于 org.springframework.data.mongodb.coreistatorindex.Mongo .checkForAndCreateIndexes(MongoPersistentEntityIndexCreator.java:148) 在 org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexCreator.checkForIndexes(MongoPersistentEntityInde xCreator.java:130) at org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexCreator.(MongoPersistentEntityIndexCreator.java:95) at org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexCreator.(MongoPersistentEntityIndexCreator.java:72) at org.springframework.data.mongodb.core.MongoTemplate.(MongoTemplate.java:275) at org.springframework.data.mongodb.core.MultiTenancyMongoTemplate.(MultiTenancyMongoTemplate.java:33) at ApplicationsMongoTemplate.(ApplicationsMongoTemplate.java:21) at MongoConfiguration.mongoOperations(MongoConfiguration.java:53) at MongoConfiguration$$EnhancerBySpringCGLIB$$dc35c2c4.CGLIB$mongoOperations$1() at MongoConfiguration$$EnhancerBySpringCGLIB$$dc35c2c4$$FastClassBySpringCGLIB$$b7e97015.invoke() at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:363) at MongoConfigurati
xCreator.java:130) 在 org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexCreator.(MongoPersistentEntityIndexCreator.java:95) 在 org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexCreator.(MongoPersistentEntityIndexCreator)。(MongoPersistentEntityIndexCreator)在 org.springframework.data.mongodb.core.MongoTemplate.(MongoTemplate.java:275) 在 org.springframework.data.mongodb.core.MultiTenancyMongoTemplate.(MultiTenancyMongoTemplate.java:33) 在 ApplicationsMongoTemplate.(ApplicationsMongoTemplate.java:21)在 MongoConfiguration.mongoOperations(MongoConfiguration.java:53) 在 MongoConfiguration$$EnhancerBySpringCGLIB$$dc35c2c4.CGLIB$mongoOperations$1() 在 MongoConfiguration$$EnhancerBySpringCGLIB$$dc35c2c4$$FastClassBySpringCGLIB$$15.CGLIB$1()at7e970 .proxy.MethodProxy.invokeSuper(MethodProxy.java:244) at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:363) at MongoConfigurati on$$EnhancerBySpringCGLIB$$dc35c2c4.mongoOperations() at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ... 122 more
on$$EnhancerBySpringCGLIB$$dc35c2c4.mongoOperations() at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:6在 java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.base/java.lang.reflect.Method.invoke(Method.java:566) 在 org.springframework.beans.factory .support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ... 122 更多
@Configuration
@EnableMongoRepositories(basePackages = "repositories", mongoTemplateRef = "mongoOperations")
public class MongoConfiguration {
private final MongoClientOptions options;
private final MongoClientFactory factory;
public MongoConfiguration(MongoProperties properties,
ObjectProvider<MongoClientOptions> options, Environment environment) {
this.options = options.getIfAvailable();
this.factory = new MongoClientFactory(properties, environment);
}
@Bean(destroyMethod = "close")
public MongoClient mongo() {
return this.factory.createMongoClient(this.options);
}
@Bean
public ValidatingMongoEventListener validatingMongoEventListener() {
return new ValidatingMongoEventListener(validator());
}
@Bean
public LocalValidatorFactoryBean validator() {
return new LocalValidatorFactoryBean();
}
@Bean
public MongoOperations mongoOperations(final ShareContextMongoDbFactory mongoDbFactory, final MongoConverter mongoConverter) {
return new ApplicationsMongoTemplate(mongoDbFactory, mongoConverter);
}
@Bean
public ShareContextMongoDbFactory mongoDbFactory(final MongoClient mongoClient, final MongoProperties mongoProperties) {
return new ShareContextMongoDbFactory(mongoClient, mongoProperties.getDatabase());
}
}
public class ApplicationsMongoTemplate extends MultiTenancyMongoTemplate implements
ApplicationEventPublisherAware {
private ApplicationEventPublisher applicationEventPublisher;
public ApplicationsMongoTemplate(
ShareContextMongoDbFactory mongoDbFactory,
MongoConverter mongoConverter) {
super(mongoDbFactory, mongoConverter);
}
/**
* Remove the given object from the collection by id.
*
* @param object must not be {@literal null}.
* @return the {@link DeleteResult} which lets you access the results of the previous delete.
*/
@Override
@NonNull
public DeleteResult remove(Object object) {
Assert.notNull(object, "Object must not be null!");
applicationEventPublisher.publishEvent(new BeforeDeleteEvent(object));
return super.remove(object);
}
@Override
public void setApplicationEventPublisher(
@NonNull ApplicationEventPublisher applicationEventPublisher) {
this.applicationEventPublisher = applicationEventPublisher;
}
}
build.gradle dependecies
dependencies {
compile "org.springframework.cloud:spring-cloud-starter-openfeign"
compile "org.springframework.boot:spring-boot-starter-cache"
compile "org.springframework.boot:spring-boot-starter-actuator"
compile "org.springframework.boot:spring-boot-starter-data-mongodb"
compile "org.springframework.boot:spring-boot-starter-security"
compile "org.springframework.boot:spring-boot-starter-validation"
compile "org.springframework.boot:spring-boot-starter-websocket"
compile "org.springframework.boot:spring-boot-starter-web"
compile "org.springframework.boot:spring-boot-starter-aop"
compile "org.springframework.boot:spring-boot-starter-amqp"
compileOnly "org.springframework.boot:spring-boot-configuration-processor"
testCompile "org.springframework.boot:spring-boot-starter-test"
testCompile "org.openjdk.jmh:jmh-core:${jmh_version}"
testCompile "org.openjdk.jmh:jmh-generator-annprocess:${jmh_version}"
testCompile "org.powermock:powermock-module-junit4:${powermock_version}"
testCompile "org.powermock:powermock-api-mockito2:${powermock_version}"
testCompile "org.mockito:mockito-core:2.18.3"
testCompile "commons-beanutils:commons-beanutils:1.9.4"
}
From the logs that i have found that index is not defined properly in one of your spring managed mongo document.从我发现的日志中,您的 spring 管理的 mongo 文档之一中未正确定义索引。 Try checking your ensureIndex method and @CompoundIndex annotation.
尝试检查您的ensureIndex方法和@CompoundIndex注释。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.