簡體   English   中英

Spring Boot 無法識別 MongoDB RestController 類

[英]Spring Boot does not recognize MongoDB RestController class

我是 MongoDB 的新手,我正在嘗試將它與我的 SpringBoot 應用程序一起使用。 我已經在線學習了我的教程並下載了他們的代碼並執行了它。

但是,無論出於何種原因,我的項目都無法打印 RequestMappingHandlerMapping : Mapped “{[/findAllBooks/{id}],methods=[GET]}”

我想知道是否有人能夠建議我這是由於我的項目結構的性質。 我不確定我的 SpringBootMain 是否可以看到我的 Controller 類。

我的項目結構最好在這里查看https://github.com/emuldrew855/backend/tree/A/B-Testing/src/main/java/com/ebay/queens/demo

我的控制器類

package com.ebay.queens.demo.resource;

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

    @Autowired
    private UserRepository userRepository;

    @PostMapping("/AddUser")
    public String saveUser(@RequestBody User user) {
        userRepository.save(user);
        return "Added user with id: " + user.getId();
    }

    @GetMapping("/all")
    public List<User> getAll(){
        List<User> users = this.userRepository.findAll();
        return users;
    }
}

我的主課

package com.ebay.queens.demo;
    @SpringBootConfiguration
    @SpringBootApplication
    public class SpringBootMain implements CommandLineRunner {
        @Autowired
        private TokenUtilityClass tokenUtilityClass;

    @Bean ResourceConfig resourceConfig() {
    return new ResourceConfig().registerClasses(Version1Api.class, Login.class, SignUp.class, Paypal.class); }

    @Override
    public void run(String... args) throws Exception {
        // test.authenticationToken();
    }

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

}

我已經弄清楚為什么不起作用...您正在使用 2 個不同的 WebService API,它們不兼容...

Spring-Boot 具有原生 API,可與帶有@RestController注釋的 API Rest 一起@RestController 您不需要使用Glassfish服務器。

解決方案#1

  1. SpringBootMain刪除@Bean ResourceConfig resourceConfig() {...} 現在,您的 API /v2將按預期工作。

  2. 您的 API /v1將無法使用,因為它使用其他庫。 您需要將@Path更改為@GetMapping@PostMapping並將@RestController添加到您的Version1Api類中。

解決方案#2

您忽略 Spring-Boot 原生 Rest API 並實現Glassfish Server。

  1. 添加UserController.class參考

@Bean ResourceConfig resourceConfig() { return new ResourceConfig().registerClasses(Version1Api.class, Login.class, SignUp.class, Paypal.class, UserController.class ); }

  1. 對於UserController@RestController更改為@Path("/v2")

@Path("/v2")
public class UserController {

    @Autowired
    private UserRepository userRepository;

    @POST
    @Path("/AddUser")
    @Produces(MediaType.TEXT_PLAIN)
    public String saveUser(@RequestBody User user) {
        userRepository.save(user);
        return "Added user with id: " + user.getId();
    }

    @GET
    @Path("/all")
    @Produces(MediaType.APPLICATION_JSON)
    public List<User> getAll(){
        List<User> users = this.userRepository.findAll();
        return users;
    }
}

現在兩個 API 都將按預期工作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM