2016-07-31 4 views
0

스프링 부트를 사용하여 샘플 프로젝트를 만들고 /에 간단한 문자열 메시지를 매핑하려고했습니다. 이 목적으로 @Controller 주석을 사용했습니다. 그러나 어떤 이유로 맵핑이 작동하지 않습니다. 나는 또한 운이없는 @ComponentScan@EnableWebMvc를 포함했다.기본 컨트롤러 구성이 스프링 부트에서 작동하지 않습니다.

나는 달리는 데 목표로 spring-boot:run을 사용했습니다. 프로젝트를 https://github.com/tejact/SpringBasicsTreeHouse에 업로드했습니다. 여기

는 컨트롤러 :

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

주요 응용 프로그램 항목 :

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); 
    } 
} 

그리고 봄 부팅 로그 : 또한

[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) 

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

답변

5

기본적으로 @ComponentScan은 현재 패키지와 모든 하위 패키지를 검사합니다.

AppConfig 클래스는 패키지 com.teja이고 GifControllerController 패키지이므로 스캔되지 않습니다.

예를 들어 GifController에서 com.teja.controller 또는 다른 하위 패키지 com.teja으로 이동하면 작동합니다.

일반적으로 bootstraping 클래스와 모든 구성 클래스를 <com|org|etc>.<myCompany>.<myProject> 패키지에 보관하고 다른 패키지를이 패키지의 하위 패키지로 만듭니다.

@Component@Controller도 필요하지 않습니다. @Component - @Controller을 이미 @Component (으)로 상속합니다.

+0

감사합니다. 맑은 – mc20

관련 문제