繁体   English   中英

Spring Boot中的上下文初始化问题

[英]context initialization Issue in Spring Boot

我是Spring Boot的新手,正在尝试使用Spring Boot创建一个简单的应用程序,并收到以下错误消息:

org.springframework.beans.factory.UnsatisfiedDependencyException:创建名称为“ carsApplication”的bean时出错:未通过字段“ carMongoRepository”表示的依赖关系;

嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名称为“ carMongoRepository”的bean时出错:初始化方法的调用失败;嵌套异常是org.springframework.data.mapping.model.MappingException:无法查找域的映射元数据类java.lang.Object!

这是项目结构

这是我实现的Model类:

具有id,make和model的汽车的模型类,它包括get和set方法

package com.example.cars;

import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.stereotype.Component;


@Document(collection = "cars")
public class Car {

    private String id;
    private String make;
    private String model;

    public Car() {
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getMake() {
        return make;
    }

    public void setMake(String make) {
        this.make = make;
    }

    public String getModel() {
        return model;
    }

    public void setModel(String model) {
        this.model = model;
    }


}

这是我实现的Main类:

Spring Boot应用程序运行该应用程序的主类

package com.example.cars;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
@EnableAutoConfiguration
@ComponentScan
public class CarsApplication {

    @Autowired
    CarMongoRepository carMongoRepository;

    public static void main(String[] args) {
        SpringApplication.run(CarsApplication.class, args);
    }
}

这是我已经实现的Controller类:

API调用的控制器类可添加汽车值(例如model和make)。包括具有POST方法实现的API调用,如下所示。

package com.example.cars;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;


@Controller
public class CarController {

    @Autowired
    CarMongoRepository carMongoRepository;

    @RequestMapping(value = "/addCar", method = RequestMethod.POST)
    public void addCar(@ModelAttribute Car car) {
        carMongoRepository.save(car);
    }

}

这是我已经实现的存储库

CRUD存储库的已实现接口调用应用程序,如下所示。此实现使用@Repository批注。 类名是CarMongoRepository,它扩展了CRUDRepository,如下所示。

package com.example.cars;

import org.springframework.data.repository.CrudRepository;

import com.example.cars.Car;
import org.springframework.stereotype.Repository;

@Repository
public interface CarMongoRepository extends CrudRepository {
}

当我尝试运行spring boot主类时遇到了如上所述的错误。因此,请帮助我解决此问题。

CrudRepository需要通用参数来知道它应该处理哪个实体(或文档)。

使您的CarMongoRepository扩展CrudRepository<Car, String> ,它应该可以工作。

第一个参数指定存储库应处理的实体/文档的类型,第二个参数是此实体/文档的id的类型(我假设它是Car类中String类型的字段id

如果您不指定任何参数,它将假定您的CarMongoRepository扩展了CrudRepository<Object, Object> ,这就是错误消息告诉您的内容。

org.springframework.data.mapping.model.MappingException:无法查找域类java.lang.Object的映射元数据!

您的应用程序尝试查找未定义Object类型的实体/文档的映射。

我对使用Spring文档存储数据库不是很熟悉,但是我认为您必须使用@Id注释Car类中的id属性(至少是@Entity类的注释。也许@Document类有不同的等效项)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM