代码之家  ›  专栏  ›  技术社区  ›  Mayur

Rest URL路径未映射(Spring Boot)

  •  1
  • Mayur  · 技术社区  · 7 年前

    考虑一下,接下来的课程针对我的问题,

    package com.abb;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication(scanBasePackages = {"com.abb.repositories"})
    public class ServerApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(ServerApplication.class, args);
        }
    }
    

    CrudRepository接口(它只是添加到这里,因为我觉得包可能会导致此问题):

    package com.abb.repositories;
    
    import org.springframework.data.repository.CrudRepository;
    import com.abb.entities.XYZ;
    
    public interface XYZRepository extends CrudRepository<XYZ, Long> { }
    

    rest API的控制器Java类:

    package com.abb.controller;
    
    import org.springframework.beans.factory.annotation.Autowired; 
    import org.springframework.web.bind.annotation.RequestBody; 
    import org.springframework.web.bind.annotation.RequestMapping; 
    import org.springframework.web.bind.annotation.RequestMethod; 
    import org.springframework.web.bind.annotation.ResponseBody; 
    import org.springframework.web.bind.annotation.RestController;
    import com.abb.repositories.XYZRepository;
    
    @RestController 
    @RequestMapping("/abc") 
    public class ABCController {
    
         @Autowired
         private XYZRepository xyzRepository;
    
         @RequestMapping(value = "/test", method = RequestMethod.POST)
         public @ResponseBody String test(@RequestBody int iValue) {
              return "done" + iValue; 
         }
    }
    

    服务器日志:

    2017-10-25 22:22:25.579  INFO 4664 --- [  restartedMain] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
    2017-10-25 22:22:26.291  INFO 4664 --- [  restartedMain] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4521e6e2: startup date [Wed Oct 25 22:22:17 IST 2017]; root of context hierarchy
    2017-10-25 22:22:26.470  INFO 4664 --- [  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)
    2017-10-25 22:22:26.485  INFO 4664 --- [  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)
    2017-10-25 22:22:26.548  INFO 4664 --- [  restartedMain] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
    2017-10-25 22:22:26.548  INFO 4664 --- [  restartedMain] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
    2017-10-25 22:22:26.657  INFO 4664 --- [  restartedMain] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
    2017-10-25 22:22:27.250  INFO 4664 --- [  restartedMain] o.s.b.d.a.OptionalLiveReloadServer       : LiveReload server is running on port 35729
    2017-10-25 22:22:27.344  INFO 4664 --- [  restartedMain] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
    2017-10-25 22:22:27.470  INFO 4664 --- [  restartedMain] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
    2017-10-25 22:22:27.486  INFO 4664 --- [  restartedMain] com.yq.WhyqueueServerApplication         : Started WhyqueueServerApplication in 10.814 seconds (JVM running for 11.612)
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Pytry    7 年前

    问题是您将spring boots scanner限制为仅扫描存储库包。不会扫描其他包裹。这意味着它不会拾取“com.abb.controllers”包中的控制器。

    删除scanBasePackages属性,替换该值,或添加要扫描的每个包。

    @SpringBootApplication
    

    或者:

    @SpringBootApplication(scanBasePackages = {"com.abb"})