![](/img/trans.png)
[英]Spring Boot - @ConditionalOnExpression for @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
服務器。
從SpringBootMain
刪除@Bean ResourceConfig resourceConfig() {...}
。 現在,您的 API /v2
將按預期工作。
您的 API /v1
將無法使用,因為它使用其他庫。 您需要將@Path
更改為@GetMapping
或@PostMapping
並將@RestController
添加到您的Version1Api
類中。
您忽略 Spring-Boot 原生 Rest API 並實現Glassfish
Server。
UserController.class
參考@Bean ResourceConfig resourceConfig() { return new ResourceConfig().registerClasses(Version1Api.class, Login.class, SignUp.class, Paypal.class, UserController.class ); }
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.