2017-07-22 7 views
1

私は新しいプロジェクトのリポジトリとしてmongodbを使い始めました。mongoサーバでユーザ認証を設定するまではすべて問題ありませんでした。私は、認証mongodb org.springframework.data.authentication.UserCredentialsデフォルトコンストラクタが見つかりませんでした

<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"> 
    <constructor-arg name="mongo" ref="mongo"/> 
    <constructor-arg name="databaseName" value="admin"/> 
    <constructor-arg name="userCredentials" ref="mongoCredentials"/> 
</bean> 

<bean id="mongoCredentials" class="org.springframework.data.authentication.UserCredentials"> 
    <property name="username" value="user" /> 
    <property name="password" value="password" /> 
</bean> 

<bean class="com.mongodb.MongoURI" id="mongoURI"> 
    <constructor-arg value="mongodb://localhost:27017" /> 
</bean> 

<bean class="com.mongodb.Mongo" id="mongo"> 
    <constructor-arg ref="mongoURI" /> 
</bean> 

とモンゴに接続するために、以下のように私のspring.config.xmlを変更

と、このスタックされたトレース:のpom.xmlの

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mongoTemplate' defined in class path resource [spring-config.xml]: Cannot resolve reference to bean 'mongoCredentials' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mongoCredentials' defined in class path resource [spring-config.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.authentication.UserCredentials]: No default constructor found; nested exception is java.lang.NoSuchMethodException: org.springframework.data.authentication.UserCredentials.<init>() 
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:359) 
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108) 
at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:648) 
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:140) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1143) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1046) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) 
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772) 
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538) 
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) 
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83) 
at com.tosan.test.Test.main(Test.java:27) 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mongoCredentials' defined in class path resource [spring-config.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.authentication.UserCredentials]: No default constructor found; nested exception is java.lang.NoSuchMethodException: org.springframework.data.authentication.UserCredentials.<init>() 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1105) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1050) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) 
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) 
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351) 
... 17 more 
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.authentication.UserCredentials]: No default constructor found; nested exception is java.lang.NoSuchMethodException: org.springframework.data.authentication.UserCredentials.<init>() 
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:85) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1098) 
... 25 more 
Caused by: java.lang.NoSuchMethodException: org.springframework.data.authentication.UserCredentials.<init>() 
at java.lang.Class.getConstructor0(Class.java:3082) 
at java.lang.Class.getDeclaredConstructor(Class.java:2178) 
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:80) 
... 26 more 

一部:

<properties> 
    <spring.version>4.2.4.RELEASE</spring.version> 
</properties> 
<dependencies> 
    <dependency> 
     <groupId>com.ibm.icu</groupId> 
     <artifactId>icu4j</artifactId> 
     <version>57.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 

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

<dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context-support</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
私はあなたの助けに感謝します。

+1

このサイトの古い投稿から設定をコピーしているように見えます。このコンストラクタを使用するには、Bean定義を変更する必要があります。私はあなたに提案します[実際にはマニュアルの代わりに何をしてください](https://docs.spring.io/spring-data/data-mongo/docs/current/reference/html/) –

答えて

1

UserCredentialsクラスは、デフォルトの構造を持たず、次の引数を持つクラスを持っています:UserCredentials(String username, String password)

<bean id="mongoCredentials" class="org.springframework.data.authentication.UserCredentials"> 
    <constructor-arg value="user" /> 
    <constructor-arg value="password" /> 
</bean> 
1

はこれを試してみてください。

<bean id="mongoCredentials" class="org.springframework.data.authentication.UserCredentials"> 
<constructor-arg value="user"></constructor-arg> 
<constructor-arg value="password"></constructor-arg> 

あなたがそれを設定している方法は、春には、デフォルトのコンストラクタを呼び出してから、セッターを呼び出そう。もちろん、デフォルトのコンストラクタはありません。したがって、Springは例外を報告します。

関連する問題