【问题标题】:Spring Mongo Template error while creating bean创建bean时出现Spring Mongo模板错误
【发布时间】:2013-11-30 07:13:24
【问题描述】:

我正在使用两个数据库,所以我在我的上下文 servlet 中添加了这两个数据库。但它给出了错误.. 我的 servlet.context 是

<!-- Mongo settings -->
    <mongo:mongo id="mongo" host="192.148.5.5" port="27017" />

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

    </beans:bean>
    <beans:bean id="mongoTemplate2"
        class="org.springframework.data.mongodb.core.MongoTemplate">
        <beans:constructor-arg ref="mongo" />
        <beans:constructor-arg name="databaseName"
            value="readDB" />

    </beans:bean>
    <mongo:repositories base-package="com.cheasyy.cofinding,com.cheasyy.cofinding.controller" />

错误是

自动装配依赖注入失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:无法自动装配字段:org.springframework.data.mongodb.core.MongoTemplate com.cheasyy.cofinding.service.profile.ProfileServiceImpl.mt;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有定义类型 [org.springframework.data.mongodb.core.MongoTemplate] 的唯一 bean:预期的单个匹配 bean 但找到 2:[mongoTemplate,mongoTemplate2] org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:287) 我在哪里失踪?

我的 ProfileServiceImpl 类是 @服务

public class ProfileServiceImpl implements profileService {

    @Autowired
    MongoTemplate mt;
    @Override
    public void insert(Profile profile) {
        // TODO Auto-generated method stub
        System.out.println("in service ipl");
    mt.save(profile);   
    System.out.println("saved in db");

    }

}

【问题讨论】:

  • 你读过邮件吗?如果定义了两个 MongoTemplate 并且您没有告诉 Spring 要自动装配哪一个,那么 Spring 如何在 ProfileServiceImpl 中自动装配 MongoTemplate? ProfileServiceImpl 的代码在哪里?
  • 我用 ProfileServiceImpl 类编辑了代码。
  • 这里看起来是同样的问题:stackoverflow.com/questions/20536791/…

标签: spring-mvc spring-mongo


【解决方案1】:

直接来自the documentation

5.9.3 使用限定符微调基于注释的自动装配

由于按类型自动装配可能会导致多个候选者,因此通常需要对选择过程进行更多控制。实现这一点的一种方法是使用 Spring 的 @Qualifier 注释。

点击链接了解更多详情。

【讨论】:

    猜你喜欢
    • 2015-07-23
    • 2013-01-19
    • 2014-11-24
    • 2016-06-24
    • 2013-10-06
    • 1970-01-01
    • 2017-02-03
    • 1970-01-01
    • 2012-11-16
    相关资源
    最近更新 更多