当前位置: 首页 > 知识库问答 >
问题:

无法在Spring创建mongotemplate

宿衡虑
2023-03-14

错误:

2月19日-2016 00:00:16.731SEVERE[localhost]org.apache.catalina.core.Applicationontext.logStandard ardWrapper。可投掷org.springframework.beans.factory.BeanCreationException:创建名称为“人员服务”的bean时出错:自动加载依赖项注入失败;嵌套异常是org.springframework.beans.factory.BeanCreationException:无法自动连接字段:私有org.springframework.data.mongodb.core.MongoTemplatecom.test.app.service.人员ervice.mongo模板;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名称为“mongoTemplate”的bean时出错,定义在ServletContext资源[/WEB-INF/mvc-dispatcher-servlet.xml]中:bean的实例化失败;嵌套异常是org.springframework.beans.BeanInstantiationException:无法实例化bean类[org.springframework.data.mongodb.core.MongoTemplate]:构造函数抛出异常;嵌套异常是java.lang.NoSuchMachodErrororg.springframework.core.convert.support.:ConversionServiceFactory.createDefaultConversionService()Lorg/springFramework/core/转换/支持/GenericConversionService;

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc" 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-3.0.xsd http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.2.xsd">

<context:component-scan base-package="com.test.app" />
<mvc:annotation-driven/>
	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix">
			<value>/WEB-INF/</value>
		</property>
		<property name="suffix">
			<value>.jsp</value>
		</property>
	</bean>
<!-- Factory bean that creates the Mongo instance -->
	 <bean id="mongo" class="org.springframework.data.mongodb.core.MongoFactoryBean">
		<property name="host" value="localhost" />
	</bean>
	
	
	<!-- MongoTemplate for connecting and querying the documents in the database -->
	<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
		<constructor-arg name="mongo" ref="mongo" />
		<constructor-arg name="databaseName" value="test" />
	</bean>

	<!-- Use this post processor to translate any MongoExceptions thrown in @Repository annotated classes -->
	<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />
	
	<bean id="personController" class="com.test.app.controller.PersonController" />
    <bean id="personService" class="com.test.app.service.PersonService" />
    <bean id="person" class="com.test.app.model.Person" />
	
	
</beans>

我看到很多关于这个错误的帖子,但没有解决这个问题的答案。

共有2个答案

高弘光
2023-03-14

这几乎是同样的事情,只有注释驱动。在供应商中,我只是在铸造mongoTemplate(您可能不希望这样)。因此,如果使用spring配置,一切都应该正常工作。

Spring配置:

@Configuration
public class SpringConfig {

    @Bean
    public MongoDbFactory mongoDbFactory() throws UnknownHostException{
        return new SimpleMongoDbFactory(new MongoClient(),"games");
    }

    @Bean
    public MongoTemplate mongoTemplate() throws UnknownHostException{
        MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory());      
        return mongoTemplate;
    }

}

之后,我创建了一个供应商(本例中为谷歌番石榴),您可能不需要它

public class MongoOperationSupplier implements Supplier<MongoOperations>{
    @Override
    public MongoOperations get() {
        ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
        MongoOperations mongoOperation = (MongoOperations) ctx.getBean("mongoTemplate");
        return mongoOperation;
    }
}

带注释的类:

@Document(collection="game_suspicious_event")
public class SuspiciousEvent {
    @Id
    private String id;

    private String apiKey;
    private String userUniqueId;
    private Date date;
    private String ip;
    private String additionalInformation;

    public SuspiciousEvent(){}

    public SuspiciousEvent(String apiKey,String userUniqueId,Date date, String ip, String additionalInformation){
        this.apiKey=apiKey;
        this.userUniqueId=userUniqueId;
        this.date=date;
        this.ip=ip;
        this.additionalInformation=additionalInformation;
    }

    public String getApiKey() {
        return apiKey;  
    }
}

然后使用:

final MongoOperations mo = new MongoOperationSupplier().get();
mo.save(new SuspiciousEvent(......));

希望有帮助。

阴迪
2023-03-14

spring core的版本需要与spring数据的版本匹配。下面是我的pom部分。xml:

  <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-core</artifactId>
       <version>4.2.4.RELEASE</version>
  </dependency>

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

它是固定的。

 类似资料:
  • 我正在尝试基于此示例编写自己的代码。 我使用的是Spring Boot,所有依赖项都来自https://start.spring.io/ 这是我的知识库: 我的控制器的一部分: 我的Spring Boot: 我收到此错误: 我做错了什么?如果有必要,我可以发布更多类似实体的代码 我正在使用IntelliJ IDEA。

  • 经过安装Spring屋顶的痛苦。我正在尝试创建一个项目。然而,在通过spring shell创建了pojo之后,我现在正在创建spring存储库。我运行了以下命令来创建POJO 到目前为止一切都很好,但麻烦来了: 我立刻得到这个消息——实体选项应该是一个实体。我被卡住了。我尝试删除pojo并运行以下命令: 我得到的消息是:< code >“选项‘test automatically’,‘activ

  • 我是春靴新来的,我需要你的帮助。我试图配置我的MySQL DB,JPA(Hibernate),但我遇到了以下异常: 创建类路径资源中定义的名为“实体ManagerFactory”的bean时出错。....

  • 我是Spring Data的新手,并试图通过关注这篇关于SO和其他一些教程的帖子来解决这个问题,但没有取得太大成功。 我正在尝试在 2 个表之间使用 Spring Data JPA 进行简单的连接。数据库中的表称为: * user_vehicle - user_vehicle表中数据库中的当前数据: ID|vehicle_ID|user_ID 1|1|1 2|2|1 这是我尝试过但无法让它工作的代

  • 我正在使用tomcat web应用程序和rest webservice,当我插入数据时,我会遇到异常! 我的类CustomerProxy:

  • 我正在尝试使用JPA生成表。但我不能创造它。代码中没有错误,但似乎存在配置错误。但我找不到它,我尝试了很多配置但没有发生。多谢. 这是: } pom.xml