[SPRING] WebMvcConfigurerAdapter가 작동하지 않습니다.
SPRINGWebMvcConfigurerAdapter가 작동하지 않습니다.
이것은 내가 수행중인 WebConfig 코드입니다.
package hello.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/greeting").setViewName("greeting");
}
}
그리고 이것은 내 Application.class입니다.
package hello;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.web.SpringBootServletInitializer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
@SpringBootApplication
public class Application extends SpringBootServletInitializer{
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
}
이 클래스 메소드가 일부 시스템에서 호출되지 않는 것은 스프링 부트 이슈 인 것 같습니다. 해당 문제는 다음에서보고됩니다. https://github.com/spring-projects/spring-boot/issues/2870
내 질문은이 클래스 외부의이 클래스에 매핑 된 리소스를 임시 해결 방법으로 매핑 할 수 있는가하는 것입니다.
그렇다면 어떻게해야합니까?
업데이트 : Andy Wilkinson의 제안에 따라 @EnableWebMvc를 제거하고 데모 응용 프로그램이 작동하기 시작했습니다. 그런 다음 프로젝트 파일을 하나씩 스트립하여 오류가 사라지는 지점을 확인했습니다. 프로젝트에 두 개의 클래스가 있다는 것을 알았습니다. 하나는 WebMvcConfigurationSupport에서, 두 번째는 WebMvcConfigurerAdapter에서 확장되었습니다. 이전 클래스를 프로젝트에서 제거하면 오류가 수정되었습니다.
내가 알고 싶은 것은 왜 이런 일이 일어 났는가하는 것입니다. 둘째, 왜이 오류가 모든 시스템에 나타나지 않습니까?
해결법
-
==============================
1.문제는 WebConfig가 config 패키지에 있고 Application이 hello 패키지에 있다는 것입니다. Application의 @SpringBootApplication은 선언 된 패키지 및 해당 패키지의 하위 패키지에 대한 구성 요소 검색을 가능하게합니다. 이 경우 hello는 구성 요소 검색을위한 기본 패키지이므로 구성 패키지의 WebConfig는 절대로 발견되지 않습니다.
문제는 WebConfig가 config 패키지에 있고 Application이 hello 패키지에 있다는 것입니다. Application의 @SpringBootApplication은 선언 된 패키지 및 해당 패키지의 하위 패키지에 대한 구성 요소 검색을 가능하게합니다. 이 경우 hello는 구성 요소 검색을위한 기본 패키지이므로 구성 패키지의 WebConfig는 절대로 발견되지 않습니다.
문제를 해결하기 위해 WebConfig를 hello 패키지 나 하위 패키지 (예 : hello.config)로 이동 시켰습니다.
GitHub의 최신 업데이트로 WebConfig가 WebMvcConfigurerAdapter를 확장하여 WebMvcConfigurationSupport를 확장하는 것으로 변경되었습니다. WebMvcConfigurationSupport는 @EnableWebMvc에서 가져온 클래스이므로 @EnableWebMvc로 클래스에 주석을 달고 WebMvcConfigurationSupport를 확장하면 사물을 두 번 구성하게됩니다. 이전과 마찬가지로 WebMvcConfigurerAdapter를 다시 확장해야합니다.
from https://stackoverflow.com/questions/30910642/webmvcconfigureradapter-does-not-work by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Jar의 여러 XML 파일을 사용하는 Spring ApplicationContext (0) | 2019.04.29 |
---|---|
[SPRING] @Transactional 메서드에서 Spring 내에서 트랜잭션이 시작되지 않습니다. (0) | 2019.04.29 |
[SPRING] Spring 5와 JUnit 5 + Mockito - 컨트롤러 메소드는 null을 반환합니다. (0) | 2019.04.29 |
[SPRING] 스프링 보안 : configure (AuthenticationManagerBuilder auth) (0) | 2019.04.29 |
[SPRING] @Autowired annotation은 JUnit 클래스에서 Bean을 삽입 할 수 없다. (0) | 2019.04.29 |