目前,我在使用 MongoDB 进行 Spring 身份验证时遇到问题。我的 Spring XML 配置文件中有以下声明:
Spring Boot 导入 Spring XML 文件: 我在我的“spring boot 主类”中导入下面的“spring configuration XML”文件,如下所示:
@SpringBootApplication
@ImportResource("classpath:META-INF/spring/Myapp-AppContext.xml")
public class MySpringBootApplication extends SpringBootServletInitializer {
.... //Some Code goes here
}
弹簧配置 XML 文件:
<mongo:mongo-client id="mongo" host="localhost" port="27017" credentials="admin:mypass@mydb">
<mongo:client-options description="Connection to DB"/>
</mongo:mongo-client>
<mongo:db-factory id="myConnection" mongo-ref="mongo" dbname="mydb"/>
<mongo:template id="myOps" db-factory-ref="myConnection"/>
<mongo:repositories
base-package="com.test.app" mongo-template-ref="myOps" />
在将其作为“Spring Boot 应用程序”运行时,出现以下错误:
例外:
原因:org.springframework.beans.ConversionNotSupportedException:无法将类型“java.lang.String”的属性值转换为属性“凭据”所需的类型“com.mongodb.MongoCredential []”;嵌套异常是 java.lang.IllegalStateException:无法将类型“java.lang.String”的值转换为属性“credentials [0]”所需的类型“com.mongodb.MongoCredential”:找不到匹配的编辑器或转换策略 在 org.springframework.beans.AbstractNestablePropertyAccessor.convertIfNecessary(AbstractNestablePropertyAccessor.java:590) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE] 在 org.springframework.beans.AbstractNestablePropertyAccessor.convertForProperty(AbstractNestablePropertyAccessor. java:604) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:219) ~[spring-beans-5.0.6 .RELEASE.jar:5.0.6.RELEASE] 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.convertForProperty(AbstractAutowireCapableBeanFactory.java:1658) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6。发布] 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1614)~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE]在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1361)~[spring-beans-5.0 .6.RELEASE.jar:5.0.6.RELEASE] 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:578) ~[spring-beans-5.0.6.RELEASE.jar:5.0. 6.RELEASE] ...省略了118个常用帧578)~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE] ...省略了118个常用框架578)~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE] ...省略了118个常用框架
异常原因:
根据我的理解,我认为“Spring-data-Mongodb” JAR 缺少一个“Converter”实现,它将“credentials”属性(它是一个字符串类型)转换为一个“com.mongodb.MongoCredential”数组。
请让我知道是否有另一个支持身份验证机制的“spring-data-mongodb”企业版或任何其他解决此问题的方法。
我的应用程序使用以下版本的软件:
- 使用的 Spring Boot 版本:2.0.2.RELEASE
- 使用的 Spring 版本:5.0.6.RELEASE
- Spring Data MongoDB 版本:2.0.9.RELEASE
- Mongo驱动版本:3.8.0
- Mongo Java 驱动版本:3.8.0
- Mongo Driver Core 版本:3.8.0(与 Mongo Java Driver JAR 交替使用,因为它们是相同的)
- Mongo 社区服务器版本:3.6.5