【问题标题】:Springboot Restcontroller refusing to workSpring Boot Rest Controller 拒绝工作
【发布时间】:2018-10-05 03:29:51
【问题描述】:

在过去的 2 个小时里,我一直在试图弄清楚我简单的 springboot rest 应用程序到底发生了什么。

无论我做什么,我都无法让 restcontroller 工作,我尝试的每个 URL 都会给我一个 404。下面是我的代码。

    @RestController 
    public class PbxPortalRestControllerSet {

     @RequestMapping("/testMe")
     public String testMe()
     {
      return "I am alive";
     }
   }



    @SpringBootApplication
    public class PbxPortalApplication {

    public static void main(String[] args) {
    SpringApplication.run(PbxPortalApplication.class, args);
     }
}
 Application.properties file
 server.port = 8088

谁能告诉我到底发生了什么?我以前做过很多次,但我一生都无法弄清楚为什么这拒绝工作。

我尝试访问 localhost:8088/testMe,得到 404。

【问题讨论】:

  • Springboot 应用程序在启动期间在控制台中打印映射的端点。你能检查一下你是否能够在控制台中看到端点吗?
  • 我已经给出了我的代码 sn-p。请按照包装缝合

标签: java rest spring-boot


【解决方案1】:

如果PbxPortalApplicationPbxPortalApplication 类在不同的包中,您需要告诉您的应用程序在加载应用程序上下文时扫描控制器。

@ComponentScan 添加到您的PbxPortalApplication 类中

@SpringBootApplication
@ComponentScan(basePackageClasses = PbxPortalRestControllerSet.class)
public class PbxPortalApplication

【讨论】:

  • 是的,它们在同一个包中,我实际上尝试添加该行以防万一,但它没有效果。无论哪种方式都不需要,因为它们都在同一个包中。
  • 根据docs.spring.io/spring-boot/docs/current/reference/html/… 文档,可以使用单个@SpringBootApplication 注释来启用这些树功能,即:@EnableAutoConfiguration@ComponentScan, @Configuration。因此它不应该需要@ComponentScan 注释
【解决方案2】:

我发现了问题。我使用了错误的 POM 条目。我以某种方式使用泽西而不是内置的弹簧。出于某种原因,即使我使用了错误的库,eclipse 告诉我我的注释条目非常好。一旦我删除了泽西岛的条目,一切正常

【讨论】:

    【解决方案3】:
    @RestController
    public class DemoController {
    
        @GetMapping(value= "/getName")
        public String getName(){
            return "This is a Spring Boot Application";
        }
    }
    

    主类很简单:

    package com.pcftest.demo;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class DemoApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(DemoApplication.class, args);
        }
    }
    

    你可以试试这个吗?看看它是否有效..

    @RequestMapping(value= "/testMe" , method = RequestMethod.GET)
    

    基本上有时当您不提供请求方法类型时,您会收到此类错误

    【讨论】:

    • 或者你可以试试这个:@RequestMapping(value= "/testMe" , method = RequestMethod.GET)
    【解决方案4】:

    看来你是你的控制器放置了与 spring SpringApplication 文件不同的子包。所以控制器不能从 Spring main() 访问 请添加

    @SpringBootApplication
    @ComponentScan("ControllersPackege")
    

    CodeSnipet:SpringBootApplication

    @SpringBootApplication
    @ComponentScan("ControllerPackege")
    public class PbxPortalApplication {
    
    public static void main(String[] args) {
        SpringApplication.run(PbxPortalApplication.class, args);
        }
    }
    

    CodeSnipet:控制器

    @RestController 
    public class PbxPortalRestControllerSet {
    
    @RequestMapping("/testMe")
         public String testMe()
         {
          return "I am alive";
         }
    }
    

    application.properties 文件

    server.port = 8088
    

    注意: 放入同一个包或将控制器类放在子包中的最佳方法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-25
      • 1970-01-01
      • 2020-04-10
      • 2020-10-29
      • 2019-05-10
      • 2015-12-28
      • 1970-01-01
      • 2021-02-23
      相关资源
      最近更新 更多