2015-10-21 3 views
2

j'ai le code suivantcontrôleur API Spring REST est pas appelé

Contrôleur

@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"; 
    } 
} 

Mon 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> 

et de lancer l'application de démarrage 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; 

} 

Journaux du serveur

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[email protected]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.gatcbiotech.website.misc.AppLauncher : Started AppLauncher in 2.16 seconds (JVM running for 2.496) 

J'utilise POSTMAN client Rest .Toutes je reçois est

{ "timestamp": 1445436550585, "statut": 404, "erreur": "Not Found", "message": "Aucun message disponible", "chemin": "/ get"}

je ne peux pas trouver la cartographie dans les journaux de serveur ainsi. Ma meilleure estimation après avoir passé beaucoup de temps est une fausse structure de projet.

J'ai créé un nouveau projet Web dynamique et l'ai converti en Maven, bien sûr je l'ai essayé avec un simple projet java, puis je l'ai converti en maven.

S'il vous plaît donnez-moi quelques conseils et si plus d'informations est nécessaire s'il vous plaît laissez-moi savoir merci.

+0

@assylias oui, je tentai d'y accéder en utilisant le navigateur et ainsi J'appelle droit url. Si vous voyez des journaux, il n'y a pas de correspondance avec ce contrôleur. c'est le problème. – Roxy

+0

À quoi ressemble la structure de votre projet? – dunni

+0

@dunni. Je ne sais pas comment je peux télécharger/poster une image ici, je vais essayer de l'expliquer. Projet -> Ressources Java, build, src, target, WebContent et pom.xml. Ressources Java a mes paquets/code, si les détails ne suffisent pas alors je suis désolé, c'est difficile à expliquer. – Roxy

Répondre

4

La valeur par défaut @SpringBootApplication active l'analyse des composants uniquement pour le package de la classe d'application et tous les sous-packages. Puisque le paquet de AppLauncher est com.demo.misc et que le paquet de RequestHandler est com.demo.controller, l'analyse des composants ne détectera pas la classe du bean.

Solution:
Si vous utilisez Spring Boot 1.2.x:

Soit ajouter l'annotation suivante à votre classe TestApp:

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

ou déplacer le RequestHandler à un sous-paquet de com .demo.misc, par exemple com.demo.misc.controller

Si vous utilisez déjà 1.3.x Boot Spring:

Ajoutez le paramètre suivant à votre @SpringBootApplication annotation:

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

cela a fonctionné merci pour l'explication aussi bien. – Roxy