其余URL路径未映射(Spring Boot)

时间:2017-10-25 17:25:37

标签: java spring spring-boot spring-restcontroller

考虑一下我的问题的课程,

启动应用程序java类:

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> { }

Controller Java Class For rest API:

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 个答案:

答案 0 :(得分:2)

问题在于您将弹簧靴扫描程序限制为仅扫描存储库程序包。不会扫描其他包裹。这意味着它不会选择“com.abb.controllers”包中的控制器。

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

我推荐这个:

@SpringBootApplication

或者这个:

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