CSS, Javascript, Third Party library, Images 등의 resource 를 사용하기 위해서, 경로를 지정합니다.
'resources/static' 패키지를 생성하고, 하위에 디렉터리를 생성해서 관리할 것입니다.
패키지 구조
소스
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
@EnableTransactionManagement
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry
.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/static/webjars/", "classpath:/META-INF/resources/webjars/");
registry
.addResourceHandler("/**")
.addResourceLocations("classpath:/static/", "classpath:/META-INF/resources/");
}
}
WebMvcConfigurer 인터페이스를 구현합니다.
addResourceHandlers 메소드를 오버라이딩하여 resource 패키지 경로를 정의합니다.
registry
.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/static/webjars/", "classpath:/META-INF/resources/webjars/");
classpath 에 있는 '/static/webjars', '/META-INF/resources/webjars' 경로를 '/webjars' 경로로 매핑합니다.
registry
.addResourceHandler("/**")
.addResourceLocations("classpath:/static/", "classpath:/META-INF/resources/");
classpath 에 있는 '/static', 'META-INF/resources' 경로를 '/' 경로로 매핑합니다.
@Configuration : 빈을 정의하기 위한 역할로 클래스를 지정
@EnableTransactionManagement : 트랜잭션을 사용하는 경우 지정하고, 사용하지 않는 경우 생략
<!-- Bootstrap core CSS --> <link th:href="@{/webjars/bootstrap/4.1.3/css/bootstrap.min.css}" rel="stylesheet"> | cs |
'resources/static/webjars' 경로에 있는 파일을 '/webjars' 경로로 가져올 수 있습니다.
th:href : thymeleaf 문법으로 href 경로를 지정할 때 사용
<!-- Bootstrap core JavaScript --> <script th:src="@{/webjars/jquery/3.3.1/js/jquery.min.js}"></script> <script th:src="@{/webjars/bootstrap/4.1.3/js/bootstrap.bundle.min.js}"></script> | cs |
'resources/static/webjars' 경로에 있는 파일을 '/webjars' 경로로 가져올 수 있습니다.
th:src : thymeleaf 문법으로 src 경로를 지정할 때 사용
결과
'include-link.html', 'include-script.html' 파일에 정의한 library 가 필요한 경우 포함하여 사용합니다.