升级后,Spring data mongodb在应用程序启动时崩溃
在tomcat中启动应用程序时出现以下错误:升级后,Spring data mongodb在应用程序启动时崩溃,mongodb,spring-data,spring-data-mongodb,Mongodb,Spring Data,Spring Data Mongodb,在tomcat中启动应用程序时出现以下错误: Caused by: java.lang.annotation.AnnotationFormatError: Invalid default: public abstract java.lang.Class org.springframework.data.mongodb.repository.config.EnableMongoRepositories.repositoryBaseClass() at java.lang.reflect.M
Caused by: java.lang.annotation.AnnotationFormatError: Invalid default: public abstract java.lang.Class org.springframework.data.mongodb.repository.config.EnableMongoRepositories.repositoryBaseClass()
at java.lang.reflect.Method.getDefaultValue(Method.java:612)
at org.springframework.core.annotation.AnnotationUtils.registerDefaultValues(AnnotationUtils.java:1178)
at org.springframework.core.type.classreading.RecursiveAnnotationAttributesVisitor.visitEnd(RecursiveAnnotationAttributesVisitor.java:42)
at org.springframework.core.type.classreading.AnnotationAttributesReadingVisitor.visitEnd(AnnotationAttributesReadingVisitor.java:64)
at org.springframework.asm.ClassReader.readAnnotationValues(ClassReader.java:1869)
at org.springframework.asm.ClassReader.accept(ClassReader.java:657)
at org.springframework.asm.ClassReader.accept(ClassReader.java:523)
at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:64)
at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:98)
at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:102)
at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:287)
... 50 more
在我升级到1.9之前,它在过去一直有效。什么会导致此错误?
非常感谢您提供的任何帮助我怀疑您的Spring框架和Spring数据版本不兼容 请使用检查依赖项中是否存在冲突 升级到SpringData1.10.4应该与SpringFramework 2.3.8兼容。 或者,将Spring框架降级到4.2.9也可以 我还建议不要显式地将SpringDataCommons指定为一个依赖项,因为它无论如何都会作为一个临时依赖项被引入。这将使您少担心一个版本号
另外:您几乎肯定不想要一个
spring数据共享核心
这个工件已经过时,没有新版本了。我怀疑您的spring框架和spring数据版本不兼容
请使用检查依赖项中是否存在冲突
升级到SpringData1.10.4应该与SpringFramework 2.3.8兼容。
或者,将Spring框架降级到4.2.9也可以
我还建议不要显式地将SpringDataCommons指定为一个依赖项,因为它无论如何都会作为一个临时依赖项被引入。这将使您少担心一个版本号
另外:您几乎肯定不想要
spring data commons core
此工件已经过时,并且没有新版本。升级之前您使用的是什么版本?1.7.1;之后我升级到:1.10.3、2.0、1.10.0、1.9.1;所有这些都给了我同样的错误。我升级的唯一原因是1.7.1无法处理升级可以处理的partialFilterExpression。您可以使用spring framework 4.2.9版或spring data mongo 1.10.4版进行尝试吗?升级之前您使用的是什么版本?1.7.1;之后我升级到:1.10.3、2.0、1.10.0、1.9.1;所有这些都给了我同样的错误。我升级的唯一原因是因为1.7.1无法处理升级所能处理的partialFilterExpression。您可以用SpringFramework版本4.2.9或SpringDataMongo 1.10.4来尝试吗?更新了答案:您可能不想依赖过时的SpringDataCommons核心。非常感谢。我删除了对SpringDataCommons和SpringDataCommons核心的引用,它成功了!顺便说一句:我把它放在:SpringDataMongoDB->1.9.10.RELEASE和spring->4.3.8.RELEASE,非常感谢!更新了答案:您可能不想依赖过时的SpringDataCommons Core,非常感谢。我删除了对SpringDataCommons和SpringDataCommons核心的引用,它成功了!顺便说一句:我把它放在:SpringDataMongoDB->1.9.10.RELEASE和spring->4.3.8.RELEASE,非常感谢!
<properties>
<spring.version>4.3.8.RELEASE</spring.version>
<spring.data.version>1.9.10.RELEASE</spring.data.version>
<spring.data.commons.version>1.7.0.RELEASE</spring.data.commons.version>
<spring.data.commons.core.version>1.4.1.RELEASE</spring.data.commons.core.version>
<log4j.version>1.2.17</log4j.version>
<gson.version>2.3.1</gson.version>
<servlet.version>3.1.0</servlet.version>
<bson.version>3.4.2</bson.version>
<commons.fileupload.version>1.3.1</commons.fileupload.version>
<okhttp.version>3.5.0</okhttp.version>
<mongo.java.driver.version>3.4.2</mongo.java.driver.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<dependencies>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- JavaEE APIs -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>${spring.data.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-commons</artifactId>
<version>${spring.data.commons.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-commons-core</artifactId>
<version>${spring.data.commons.core.version}</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>${gson.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${servlet.version}</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>${commons.fileupload.version}</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>${okhttp.version}</version>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>${mongo.java.driver.version}</version>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>bson</artifactId>
<version>${bson.version}</version>
</dependency>
</dependencies>
package com.somes.sns.persistence;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.data.mongodb.config.AbstractMongoConfiguration;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
@Configuration
@PropertySource("classpath:mongodb.properties")
@EnableMongoRepositories("com.somes.sns.persistence.repository")
public class PersistenceConfig extends AbstractMongoConfiguration
{
private static final String MONGODB_HOST = "mongodb.host";
private static final String MONGODB_PORT = "mongodb.port";
@Autowired
Environment env;
@Override
protected String getDatabaseName()
{
return "MyDatabase";
}
@Override
@Bean
public MongoClient mongo() throws Exception
{
String mongoHost = env.getProperty(MONGODB_HOST);
String mongoPort = env.getProperty(MONGODB_PORT);
MongoClientURI mongoUri = new MongoClientURI("mongodb://" + mongoHost + ":" + mongoPort);
MongoClient client = new MongoClient(mongoUri);
client.setWriteConcern(WriteConcern.SAFE);
return client;
}
@Override
protected String getMappingBasePackage()
{
return "com.somes.sns.persistence.domain";
}
@Override
@Bean
public MongoTemplate mongoTemplate() throws Exception
{
return new MongoTemplate(mongo(), getDatabaseName());
}
}