2017-03-05 4 views
0

나는 Spring Initializr을 사용하고 임베디드 Tomcat + Thymeleaf 템플릿 엔진을 사용하며, 실행 가능한 JAR 파일로 패키지를 사용하여 스프링 부트 웹 애플리케이션을 생성했다. 사용스프링 부트 프로파일 링

기술 :

봄 부팅 1.4.2.RELEASE, 봄 4.3.4.RELEASE, Thymeleaf 2.1.5.RELEASE, 톰캣 삽입 8.5.6, 메이븐 3, 자바 (8) 내가 가진

이 클래스

@Controller 
public class LoginController { 

    @RequestMapping({ "/", "/tdk/login"}) 
    public String welcome(Map<String, Object> model) { 
     return "tdk/login"; 
    } 
} 

and this other one: 

@Profile("pebloc") 
public class PeblocLoginController extends LoginController { 

    @Override 
    @RequestMapping({ "/", "/pebloc/login"}) 
    public String welcome(Map<String, Object> model) { 
     return "pebloc/login"; 
    } 
} 

나는이 VM 인수 이클립스 응용 프로그램 내 SpringBoot를 실행하고

-DAPP-KEY=pebloc -Dspring.profiles.active=pebloc 

이지만 PeblocLoginController가로드되지 않았습니다!

2017년 3월 5일 17 :

29:01.617 INFO 20189 --- [ restartedMain] c.i.iot.TDKCloudApplication   : The following profiles are active: pebloc 

    17-03-05 09:35:12.689 INFO 2190 --- [ restartedMain] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/ || /tdk/login]}" onto public java.lang.String com.tdk.web.LoginController.welcome(java.util.Map<java.lang.String, java.lang.Object>) 

답변

0

당신은 @ControllerPeblocLoginController에 주석을해야합니다. @Controller은 상속 된 주석이 아닙니다. 그것은 다음과 같이 될 것이다 : 그들은 클래스가 웹 요청을 처리하는 데 사용할 준비가되었음을 나타냅니다과 같이 PeblocLoginController 클래스 요구 사항에 따라 함께 @Controller 또는 @RestController 주석을 사용한다

@Profile("pebloc") 
@Controller 
public class PeblocLoginController extends LoginController { 

    @Override 
    @RequestMapping({ "/", "/pebloc/login"}) 
    public String welcome(Map<String, Object> model) { 
     return "pebloc/login"; 
    } 
} 
0

.

추신 : 봄 부팅 응용 프로그램을 개발하는 동안 Spring Tool Suite을 사용해보십시오.