gpt4 book ai didi

java - Spring Boot Controller 未注册,获取 404 - 包结构正常

转载 作者:行者123 更新时间:2023-12-02 11:45:23 25 4
gpt4 key购买 nike

我对此感到非常沮丧... Controller 没有被 Spring Boot 注册(至少我在日志中没有看到它)。

Controller 类位于主应用程序类的包下...这是人们遇到的最常见问题。

就我而言,我使用 Maven 并遵循依赖项(仅提供关键的依赖项):

spring-boot-starter-data-jpa
spring-boot-starter-web
spring-boot-starter-validation
spring-boot-configuration-processor

我还使用了 Hibernate 的一些依赖项。在日志中,我只能看到与 Hibernate 相关的内容 - 你可以看到它 here 。当我点击 Controller 的 URL 之一时,我在 Postman 中收到以下信息:

{
"timestamp": 1515870369837,
"status": 404,
"error": "Not Found",
"message": "No message available",
"path": "/hello"
}

然后,出现附加日志:

sty 13, 2018 8:06:01 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring FrameworkServlet 'dispatcherServlet'

但是没有其他真正发生的事情...我完全不明白,这是我第一次遇到像 Controller 这样微不足道的问题...而且真的找不到这个问题的解决方案堆栈溢出。

这是我正在使用的 Controller 的代码:

@RestController("/parkingPlaces")
public class ParkingPlacesController {

@Resource
ParkingPlaceService ppService;

@RequestMapping("/find")
List<ParkingPlaceDTO> findParkingPlaces(@RequestBody GpsDTO position) {
return ppService.findParkingPlaces(position.getLat(), position.getLon());
}

@RequestMapping("/find/ray")
List<ParkingPlaceDTO> findParkingPlacesWithinRadius(@RequestBody GpsDTO position) {
return ppService.findParkingPlaces(position.getLat(), position.getLon(), position.getRay());
}

}

另一个更简单:

@Controller
public class TestController {

@RequestMapping("/hello")
public String hello() {
return "Hello!";
}

}

请大家帮忙:(

更新#1我注意到日志依赖关系有些困惑...只记录了与 Hibernate 相关的内容,这让我认为没问题,但我已经做了一些清理,现在日志很明显。我可以看到 Controller 路径正在注册...

2018-01-14 20:34:57.602  INFO 8572 --- [  restartedMain] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2018-01-14 20:34:59.253 INFO 8572 --- [ restartedMain] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@3290cd1d: startup date [Sun Jan 14 20:34:46 CET 2018]; root of context hierarchy
2018-01-14 20:34:59.506 INFO 8572 --- [ restartedMain] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/find]}" onto java.util.List<pl.ppclone.dto.ParkingPlaceDTO> pl.ppclone.controller.ParkingPlacesController.findParkingPlaces(pl.ppclone.dto.GpsDTO)
2018-01-14 20:34:59.508 INFO 8572 --- [ restartedMain] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/find/ray]}" onto java.util.List<pl.ppclone.dto.ParkingPlaceDTO> pl.ppclone.controller.ParkingPlacesController.findParkingPlacesWithinRadius(pl.ppclone.dto.GpsDTO)
2018-01-14 20:34:59.513 INFO 8572 --- [ restartedMain] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/hello],methods=[GET]}" onto public java.lang.String pl.ppclone.controller.TestController.hello()
2018-01-14 20:34:59.524 INFO 8572 --- [ restartedMain] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2018-01-14 20:34:59.527 INFO 8572 --- [ restartedMain] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2018-01-14 20:34:59.607 INFO 8572 --- [ restartedMain] o.s.w.s.h.BeanNameUrlHandlerMapping : Mapped URL path [/parkingPlaces] onto handler '/parkingPlaces'
2018-01-14 20:34:59.654 INFO 8572 --- [ restartedMain] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-01-14 20:34:59.654 INFO 8572 --- [ restartedMain] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-01-14 20:34:59.826 INFO 8572 --- [ restartedMain] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-01-14 20:35:00.528 INFO 8572 --- [ restartedMain] o.s.b.d.a.OptionalLiveReloadServer : LiveReload server is running on port 35729
2018-01-14 20:35:00.730 INFO 8572 --- [ restartedMain] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup
2018-01-14 20:35:00.868 INFO 8572 --- [ restartedMain] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)

最佳答案

我设法找到了解决方案。在调试器的帮助下,我注意到/hello 确实被调用了...因为它只是一个测试 Controller ,所以我开始解决真正的问题,即 RestController。然后我注意到这个 @RestController("mainPath")实际上并没有按照我的预期工作(它在每个方法路径之前提供了额外的路径)。所以解决方案是写

@RestController
@RequestMapping("mainPath")

所以它按预期工作:)

关于java - Spring Boot Controller 未注册,获取 404 - 包结构正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48243460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com