所以我一直在一周的夫妻中学习春天,一直在关注本教程

建立一个安静的网络服务

一切都很好,直到我试图将其集成到MongoDB。所以我遵循本教程。

使用MongoDB访问数据

但是我的做法部分仍在使用第一个。因此,我的项目目录结构就是这样。

src/
├── main/
│   └── java/
|       ├── model/
|       |   └── User.java
|       ├── rest/
|       |   ├── Application.java
|       |   ├── IndexController.java
|       |   └── UsersController.java
|       └── service/
|           └── UserService.java
└── resources/
    └── application.properties

这是我的model/User.java文件

package main.java.model;

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Document(collection="user")
public class User {

    private int age;
    private String country; 
    @Id
    private String id;
    private String name;


    public User() {
        super();
    }

    public String getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getCountry() {
        return country;
    }

    public void setCountry(String country) {
        this.country = country;
    }
}

这是我的rest/UsersController.java文件

package main.java.rest;

import java.util.List;
import main.java.service.UserService;
import main.java.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping(value = "/users")
public class UsersController {

    @Autowired
    UserService userService;

    @RequestMapping(method = RequestMethod.GET)
    public List<User> getAllUsers() {
        return userService.findAll();
    }
}

这是我的service/UserService.java文件

package main.java.service;

import java.util.List;
import main.java.model.User;
import org.springframework.data.mongodb.repository.MongoRepository;

public interface UserService extends MongoRepository<User, String> {
    public List<User> findAll();
}

我可以编译它们(我正在使用Gradle进行编译,因为我正在遵循本教程),但是当我运行JAR文件时,它会丢弃此错误。


应用程序无法启动


描述:

Main.java.rest.userscontroller中的field userVice需要一个bean of type’main.java.service.userservice’的bean。

行动:

考虑在您的配置中定义" main.java.service.userservice"类型的bean。

不知道我开始搜索谷歌搜索,发现我需要包括Beans.xml文件并注册其中的用户服务。我这样做了,但这不起作用。我真的是新手,所以我真的不知道发生了什么。

答案

解决了。因此,默认情况下,所有属于@SpringBootApplication声明将被扫描。

假设我的主班ExampleApplication具有@SpringBootApplication声明在内部声明com.example.something,然后所有属于的组件com.example.something在扫描时进行扫描com.example.applicant不会被扫描。

因此,基于此的方法有两种问题。使用

@SpringBootApplication(scanBasePackages={
"com.example.something", "com.example.application"})

这样,应用程序将扫描所有指定的组件,但是我认为如果量表越来越大?

因此,我通过重组我的包装来使用第二种方法,并且可以使用它!现在我的包裹结构变得如此。

src/
├── main/
│   └── java/
|       ├── com.example/
|       |   └── Application.java
|       ├── com.example.model/
|       |   └── User.java
|       ├── com.example.controller/
|       |   ├── IndexController.java
|       |   └── UsersController.java
|       └── com.example.service/
|           └── UserService.java
└── resources/
    └── application.properties

来自: stackoverflow.com