2016-07-31 13 views
0

Ich erstelle ein Beispielprojekt mit Spring Boot und versuchte, / mit einer einfachen String-Nachricht zu verknüpfen. Ich habe @Controller Annotation für diesen Zweck verwendet. Aber aus irgendeinem Grund funktioniert das Mapping nicht. Ich habe auch @ComponentScan und @EnableWebMvc ohne Glück enthalten.Grundlegende Controller-Konfiguration Funktioniert nicht im Spring Boot

Ich habe verwendet maven spring-boot:run Ziel zu laufen. Das Projekt wurde unter https://github.com/tejact/SpringBasicsTreeHouse hochgeladen. Hier

ist die Steuerung:

package Controller; 

import org.springframework.stereotype.Component; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.ResponseBody; 

@Component 
@Controller 
public class GifController { 
    @RequestMapping("/") 
    @ResponseBody 
    public String listAllGifs() { 
     return "Listing all gifs : Madhu"; 
    }  
} 

Der Hauptanwendungseintrag:

package com.teja; 

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; 
import org.springframework.context.annotation.ComponentScan; 
import org.springframework.web.servlet.config.annotation.EnableWebMvc; 

@EnableAutoConfiguration 
@ComponentScan 
@EnableWebMvc 
public class AppConfig {  
    public static void main(String args[]) { 
     SpringApplication.run(AppConfig.class, args); 
    } 
} 

und Frühlings-Boot-Protokolle:

[INFO] Scanning for projects... 
[INFO]                   
[INFO] ------------------------------------------------------------------------ 
[INFO] Building SpingBasicsTreeHouse 0.0.1-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] >>> spring-boot-maven-plugin:1.4.0.RELEASE:run (default-cli) > test-compile @ SpingBasicsTreeHouse >>> 
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ SpingBasicsTreeHouse --- 
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent! 
[INFO] Copying 0 resource 
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ SpingBasicsTreeHouse --- 
[INFO] Changes detected - recompiling the module! 
[WARNING] File encoding has not been set, using platform encoding Cp1252, i.e. build is platform dependent! 
[INFO] Compiling 2 source files to C:\Users\Teja\git\SpringBasicsTreeHOuse\SpingBasicsTreeHouse\target\classes 
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ SpingBasicsTreeHouse --- 
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent! 
[INFO] Copying 0 resource 
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ SpingBasicsTreeHouse --- 
[INFO] Nothing to compile - all classes are up to date 
[INFO] 
[INFO] <<< spring-boot-maven-plugin:1.4.0.RELEASE:run (default-cli) < test-compile @ SpingBasicsTreeHouse <<< 
[INFO] 
[INFO] --- spring-boot-maven-plugin:1.4.0.RELEASE:run (default-cli) @ SpingBasicsTreeHouse --- 

    . ____   _   __ _ _ 
/\\/___'_ __ _ _(_)_ __ __ _ \ \ \ \ 
(()\___ | '_ | '_| | '_ \/ _` | \ \ \ \ 
\\/ ___)| |_)| | | | | || (_| | )))) 
    ' |____| .__|_| |_|_| |_\__, |//// 
=========|_|==============|___/=/_/_/_/ 
:: Spring Boot ::  (v1.4.0.RELEASE) 

2016-07-31 13:18:24.593 INFO 11084 --- [   main] com.teja.AppConfig      : Starting AppConfig on Teja-PC with PID 11084 (C:\Users\Teja\git\SpringBasicsTreeHOuse\SpingBasicsTreeHouse\target\classes started by Teja in C:\Users\Teja\git\SpringBasicsTreeHOuse\SpingBasicsTreeHouse) 
2016-07-31 13:18:24.598 INFO 11084 --- [   main] com.teja.AppConfig      : No active profile set, falling back to default profiles: default 
2016-07-31 13:18:24.712 INFO 11084 --- [   main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot[email protected]ae4a4a3: startup date [Sun Jul 31 13:18:24 EDT 2016]; root of context hierarchy 
2016-07-31 13:18:26.868 INFO 11084 --- [   main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http) 
2016-07-31 13:18:26.885 INFO 11084 --- [   main] o.apache.catalina.core.StandardService : Starting service Tomcat 
2016-07-31 13:18:26.886 INFO 11084 --- [   main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.4 
2016-07-31 13:18:27.002 INFO 11084 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]  : Initializing Spring embedded WebApplicationContext 
2016-07-31 13:18:27.003 INFO 11084 --- [ost-startStop-1] o.s.web.context.ContextLoader   : Root WebApplicationContext: initialization completed in 2297 ms 
2016-07-31 13:18:27.184 INFO 11084 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/] 
2016-07-31 13:18:27.191 INFO 11084 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*] 
2016-07-31 13:18:27.434 INFO 11084 --- [   main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot[email protected]ae4a4a3: startup date [Sun Jul 31 13:18:24 EDT 2016]; root of context hierarchy 
2016-07-31 13:18:27.582 INFO 11084 --- [   main] 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) 
2016-07-31 13:18:27.587 INFO 11084 --- [   main] 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) 
2016-07-31 13:18:28.004 INFO 11084 --- [   main] o.s.j.e.a.AnnotationMBeanExporter  : Registering beans for JMX exposure on startup 
2016-07-31 13:18:28.082 INFO 11084 --- [   main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http) 
2016-07-31 13:18:28.087 INFO 11084 --- [   main] com.teja.AppConfig      : Started AppConfig in 4.278 seconds (JVM running for 12.677) 

Auch meine pom.xml sieht wie folgt aus:

<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>TreeHouse</groupId> 
    <artifactId>SpingBasicsTreeHouse</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 

    <dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
     <version>1.4.0.RELEASE</version> 
    </dependency> 
</dependencies> 

<build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
       <version>1.4.0.RELEASE</version> 
       <executions> 
        <execution> 
         <goals> 
          <goal>repackage</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

Antwort

5

Standardmäßig scannt @ComponentScan das aktuelle Paket und alle Unterpakete.

In Ihrem Fall AppConfig Klasse ist im Paket com.teja und die GifController ist in Controller Paket, es ist so nicht gescannt.

Verschieben GifController zu com.teja.controller zum Beispiel oder ein anderes Unterpaket von com.teja und es wird funktionieren.

Normalerweise behalte ich die Bootstrapping-Klasse und alle Konfigurationsklassen im Paket mit dem Namen <com|org|etc>.<myCompany>.<myProject> und dann erstellen Sie die anderen Pakete als Unterpakete von diesem.

Sie benötigen auch nicht beide @Component und @Controller. Entfernen @Component - @Controller erbt bereits @Component.

+0

Vielen Dank. Kristallklar – mc20