我是 MongoDB 新手,我正在尝试将它与我的 SpringBoot 应用程序一起使用。我已经按照我的在线教程下载了他们的代码并执行了它。
但是,无论出于何种原因,我的项目无法打印出来 RequestMappingHandlerMapping :映射“{[/findAllBooks/{id}],methods=[GET]}”
我想知道是否有人能够给我建议,如果这是由于我的项目结构的性质造成的。 我不确定我的 SpringBootMain 是否可以看到我的 Controller 类。
在这里可以最好地查看我的项目结构 https://github.com/emuldrew855/backend/tree/A/B-Testing/src/main/java/com/ebay/queens/demo
我的 Controller 类
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 具有 native API,可通过 @RestController
注释与 API Rest 配合使用。您不需要使用 Glassfish
服务器。
解决方案#1
从
SpringBootMain
中删除@Bean ResourceConfig resourceConfig() {...}
。现在,您的 API/v2
将按预期工作。您的 API
/v1
将无法工作,因为它使用其他库。您需要将@Path
更改为@GetMapping
或@PostMapping
并将@RestController
添加到您的Version1Api 中
类。
解决方案#2
您忽略 Spring-Boot native Rest API 并实现 Glassfish
服务器。
- 添加
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 都将按预期工作
关于java - Spring Boot 无法识别 MongoDB RestController 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60514679/