簡體   English   中英

不調用Spring REST API控制器

[英]Spring REST API controller is not called

我有以下代碼

調節器

@RestController 
@RequestMapping("/") 
public class RequestHandler {
    @RequestMapping(value = "/demo", method = RequestMethod.POST)
     @ResponseBody 
    public Object showDemo() {

        return "Post method";
    }


    @RequestMapping(value = { "/getdemo" }, method = RequestMethod.GET)
      @ResponseBody 
    public  Object showgetDemo() {
  System.out.println("hello");
        return "get Method";
    }
}

我的pom xml

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>Website2015</groupId>
  <artifactId>Website2015</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.2.1.RELEASE</version>
        <relativePath />
    </parent>
    <dependencies>
<dependency> 
<groupId>org.springframework.boot</groupId> 
<artifactId>spring-boot-starter-web</artifactId> 
</dependency> 

<dependency> 
<groupId>org.springframework.boot</groupId> 
<artifactId>spring-boot-starter-test</artifactId> 
<scope>test</scope> 
</dependency> 
</dependencies>  
  <build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.3</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.6</version>
        <configuration>
          <warSourceDirectory>WebContent</warSourceDirectory>
          <failOnMissingWebXml>false</failOnMissingWebXml>
        </configuration>
      </plugin>
    </plugins>

  </build>
</project>

並啟動Spring啟動應用程序:

@Configuration
@EnableWebMvc
@SpringBootApplication
public class AppLauncher  {

    public static void main(String[] args) {
        SpringApplication.run(AppLauncher.class, args);

    }

    private static Class<AppLauncher> applicationClass = AppLauncher.class;

}

服務器日志

    2015-10-21 16:07:59.314  INFO 12892 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)
2015-10-21 16:07:59.470  INFO 12892 --- [           main] o.apache.catalina.core.StandardService   : Starting service Tomcat
2015-10-21 16:07:59.471  INFO 12892 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/8.0.15
2015-10-21 16:07:59.561  INFO 12892 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2015-10-21 16:07:59.561  INFO 12892 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1158 ms
2015-10-21 16:07:59.716  INFO 12892 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean        : Mapping servlet: 'dispatcherServlet' to [/]
2015-10-21 16:07:59.719  INFO 12892 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: 'characterEncodingFilter' to: [/*]
2015-10-21 16:07:59.921  INFO 12892 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" 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)
2015-10-21 16:07:59.921  INFO 12892 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],methods=[],params=[],headers=[],consumes=[],produces=[text/html],custom=[]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest)
2015-10-21 16:08:00.119  INFO 12892 --- [           main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@25af5db5: startup date [Wed Oct 21 16:07:58 CEST 2015]; root of context hierarchy
2015-10-21 16:08:00.275  INFO 12892 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
2015-10-21 16:08:00.322  INFO 12892 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2015-10-21 16:08:00.323  INFO 12892 --- [           main] c.xx.yy.misc.AppLauncher   : Started AppLauncher in 2.16 seconds (JVM running for 2.496)

我正在使用POSTMAN Rest客戶端。我得到的是

{“timestamp”:1445436550585,“status”:404,“error”:“Not Found”,“message”:“沒有可用消息”,“path”:“/ get”}

我也無法在服務器日志中找到映射。 花費大量時間后我最好的猜測是錯誤的項目結構。

我創建了新的Dynamic web項目並將其轉換為Maven,當然我嘗試使用簡單的java項目然后將其轉換為maven。

請給我一些指示,如果需要更多信息,請告訴我們謝謝。

默認的@SpringBootApplication僅對應用程序類的包和所有子包啟用組件掃描。 由於AppLauncher包是com.demo.misc而RequestHandler包是com.demo.controller,因此組件掃描不會檢測bean類。

解:
如果您使用的是Spring Boot 1.2.x:

將以下注釋添加到TestApp類:

@ComponentScan({"com.demo.controller", "com.demo.misc"})

或將RequestHandler移動到com.demo.misc的子包,例如com.demo.misc.controller

如果您已經在使用Spring Boot 1.3.x:

將以下參數添加到@SpringBootApplication批注中:

@SpringBootApplication(scanBasePackages = {"com.demo.controller", "com.demo.misc"})    

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM