не могу сопоставить остальной контроллер

Я пытался протестировать Spring Boot с MongoDB, но когда я запускаю mvn, сервер работает нормально, но не может найти сопоставление в RestController.

@RestController
@RequestMapping("/mongotest")
public class UserController {

    @Autowired
    private UserService service;

    @RequestMapping(value = "/getallusers" , method = RequestMethod.GET)
    public List<User> getAllUser(){
        return service.findAll();
    }
    @RequestMapping(value = "/saveuser" , method = RequestMethod.POST)
    public void saveUser(@RequestBody User user){
        service.createUser(user);
    }
    @GetMapping(value = "/hello")
    public String test(){
        return "hello world";
    }

}
@Repository
public interface UserDAO extends MongoRepository<User,String>{
    List<User> findByName(String name);
    List<User> findByDepartment(String department);
}
@Entity
@Getter @Setter @NoArgsConstructor @ToString @AllArgsConstructor
@Document(collection = "users")
public class User{
    @Id
    private Long id;

    @Field(value = "name")
    private String name;

    @Field(value = "age")
    private Integer age;

    @Field(value = "department")
    private String department;

}
spring.data.mongodb.database= test_mongo
@SpringBootApplication
@EnableAutoConfiguration(exclude = DataSourceAutoConfiguration.class)
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
        System.out.println("Deploy successful");
    }

}

Обновить класс обслуживания

@Service
public class UserService{
    @Autowired
    private UserDAO userDAO;

    public User createUser(User u){
        return userDAO.save(u);
    }

    public List<User> findByName(String name){
        return userDAO.findByName(name);
    }

    public List<User> findByDepartment(String department){
        return userDAO.findByDepartment(department);
    }

    public List<User> findAll(){
        return userDAO.findAll();
    }
}

Обновить pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0  http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.8.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example.demo</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

Программа работает нормально, но в журнале не удается найти сопоставление частей с RequestMapping, которое у меня есть в UserController. И когда я запускаю сопоставленную ссылку, возвращаю 404

```Project struct
src
   main
       java
           com
              example
                     demo
                         controller
                                   UserController.java
                         demo
                                   DemoApplication.java
                         entity
                                   User.java
                         repository
                                   UserDAO.java
                         service
                                   UserService.java
       resources
           application.properties
pom.xml
2019-09-09 22:42:05.856  INFO 19036 --- [           main] com.example.demo.demo.DemoApplication    : Starting DemoApplication on DESKTOP-UNR6TSG with PID 19036 (E:\demo\target\classes started by MemeLord in E:\demo)
2019-09-09 22:42:05.861  INFO 19036 --- [           main] com.example.demo.demo.DemoApplication    : No active profile set, falling back to default profiles: default
2019-09-09 22:42:06.782  INFO 19036 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
2019-09-09 22:42:06.784  INFO 19036 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data repositories in DEFAULT mode.
2019-09-09 22:42:06.806  INFO 19036 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 17ms. Found 0 repository interfaces.
2019-09-09 22:42:07.549  INFO 19036 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2019-09-09 22:42:07.588  INFO 19036 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2019-09-09 22:42:07.588  INFO 19036 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.24]
2019-09-09 22:42:07.707  INFO 19036 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2019-09-09 22:42:07.708  INFO 19036 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1790 ms
2019-09-09 22:42:08.053  INFO 19036 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2019-09-09 22:42:09.060  INFO 19036 --- [           main] org.mongodb.driver.cluster               : Cluster created with settings {hosts=[localhost:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500}
2019-09-09 22:42:09.138  INFO 19036 --- [localhost:27017] org.mongodb.driver.connection            : Opened connection [connectionId{localValue:1, serverValue:2}]
to localhost:27017
2019-09-09 22:42:09.144  INFO 19036 --- [localhost:27017] org.mongodb.driver.cluster               : Monitor thread successfully connected to server with description ServerDescription{address=localhost:27017, type=STANDALONE, state=CONNECTED, ok=true, version=ServerVersion{versionList=[4, 2, 0]}, minWireVersion=0, maxWireVersion=8, maxDocumentSize=16777216, logicalSessionTimeoutMinutes=30, roundTripTimeNanos=3475900}
2019-09-09 22:42:09.401  INFO 19036 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2019-09-09 22:42:09.404  INFO 19036 --- [           main] com.example.demo.demo.DemoApplication    : Started DemoApplication in 4.07 seconds (JVM running for 8.531)
Deploy successful

person Jasmine McChingkey    schedule 09.09.2019    source источник
comment
Можете ли вы предоставить свой класс обслуживания   -  person Constantin Beer    schedule 09.09.2019
comment
@Lancer действительно GET localhost:8080/mongotest/hello приводит к 404   -  person Patel Romil    schedule 09.09.2019
comment
@PatelRomil да, я оставил это для тестирования, но это не сработало   -  person Jasmine McChingkey    schedule 09.09.2019
comment
@ConstantinBeer, я только что обновил его.   -  person Jasmine McChingkey    schedule 09.09.2019
comment
@JaycinomousLancer убедитесь, что у вас нет контекстного пути в файле приложения, а контроллер находится в базовом пакете. пожалуйста, поделитесь структурой проекта для более подробной информации   -  person Patel Romil    schedule 09.09.2019
comment
@JaycinomousLancer, пожалуйста, поделитесь структурой проекта.   -  person dassum    schedule 09.09.2019
comment
@JaycinomousLancer, не могли бы вы поделиться запросом почтальона, который вы делаете, и application.properties   -  person Patel Romil    schedule 09.09.2019


Ответы (2)


Ваши пакеты имеют неправильную структуру. Вы должны поместить их во второй demo, где находится ваш DemoApplication, а не в первый, как вы это сделали. Тогда Весна их узнает.

Здесь вы можете прочитать о структурировании пакетов в Spring Boot.

person Constantin Beer    schedule 09.09.2019
comment
спасибо, я новичок в весенней загрузке, поэтому я не знал об этом - person Jasmine McChingkey; 09.09.2019

Пожалуйста, предоставьте структуру вашего пакета. Вам нужно либо иметь весь свой контроллер в виде подпакетов из класса, в котором живет ваш метод main, либо использовать аннотацию @ComponentScan. Я предпочитаю второй способ и настоятельно рекомендую его вам

person Andry Shutka    schedule 09.09.2019