2017-02-13 229 views
0

我想在spring启动应用程序中使用xml配置配置mongoClient。春季启动mongodb xml配置

Caused by: java.lang.IllegalStateException: Cannot convert value of type 'java.lang.String' to required type 'com.mongodb.MongoCredential' for property 'credentials[0]': no matching editors or conversion strategy found 
    at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:306) 
    at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:143) 
    at org.springframework.beans.TypeConverterDelegate.convertToTypedArray(TypeConverterDelegate.java:503) 
    at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:216) 
    at org.springframework.beans.AbstractNestablePropertyAccessor.convertIfNecessary(AbstractNestablePropertyAccessor.java:590) 
    ... 26 common frames omitted 

Spring配置文件:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:mongo="http://www.springframework.org/schema/data/mongo" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo.xsd"> 

<mongo:mongo-client id="mongoClient" credentials="user:[email protected]"></mongo:mongo-client> 

</beans> 

的弹簧数据的MongoDB documentation还提到关于xml配置证书字段。不知道我是否缺少任何依赖关系,或者是否需要添加一些自定义映射转换器。

的pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>io.vjso</groupId> 
    <artifactId>Gyaan</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 

    <properties> 
     <maven.compiler.plugin.version>3.5.1</maven.compiler.plugin.version> 
     <lombok.version>1.16.12</lombok.version> 
     <slf4j.version>1.7.22</slf4j.version> 
     <logback.version>1.1.8</logback.version> 
     <hibernate.version>5.2.6.Final</hibernate.version> 
     <spring.boot.version>1.5.1.RELEASE</spring.boot.version> 
    </properties> 

    <build> 
     <plugins> 
      <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

    <dependencyManagement> 
     <dependencies> 
      <dependency> 
       <groupId>org.springframework.data</groupId> 
       <artifactId>spring-data-releasetrain</artifactId> 
       <version>Hopper-SR7</version> 
       <type>pom</type> 
       <scope>import</scope> 
      </dependency> 
     </dependencies> 
    </dependencyManagement> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.5.1.RELEASE</version> 
    </parent> 

    <dependencies> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-actuator</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-devtools</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.projectlombok</groupId> 
      <artifactId>lombok</artifactId> 
      </dependency> 

     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      </dependency> 
     <dependency> 
      <groupId>ch.qos.logback</groupId> 
      <artifactId>logback-classic</artifactId> 
      </dependency> 

     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      </dependency> 

     <dependency> 
      <groupId>org.springframework.data</groupId> 
      <artifactId>spring-data-mongodb</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
     </dependency> 

    </dependencies> 


</project> 

回答

0

创建文件:SRC \主\资源\ application.properties

的MongoDB(MongoProperties)

spring.data.mongodb.host= # the db host 
spring.data.mongodb.port=27017 # the connection port (defaults to 27107) 
spring.data.mongodb.uri=mongodb://localhost/test # connection URL 
spring.data.mongodb.database= 
spring.data.mongodb.authentication-database= 
spring.data.mongodb.grid-fs-database= 
spring.data.mongodb.username= 
spring.data.mongodb.password= 
spring.data.mongodb.repositories.enabled=true # if spring data repository support is enabled 

Source Cited

将编辑后

如果你真的想要的XML configuation。我将发布一次,我找到一个解决方案

+0

是的,我能够避免与MongoClient的错误加入thespring引导起动数据,MongoDB的依赖和删除XML配置,这样一来,我们就可以使用MongoRepository并能避免使用MongoClient。但是,我在想如果我们真的想要使用MongoClient,那怎么做呢。可能是java配置中的Bean定义可能会解决这个问题。需要检查。 – vijayanand