반응형

기본적으로 Springboot 프로젝트를 만들면 정적자원들 접근 위치는 resources/static에 위치를 하게 된다.

하지만 resources/views로 위치를 바꿔서 파일들을 관리하고 싶은 경우에는 어떻게 해야 할까?


<문제점>

  1. application.properties 에서 prefix와 suffix를 설정을 해주었지만 static 폴더 안에서 다른 폴더로 접근할 때 적용이 되었다. 
  2. 그렇다고 static/하위폴더 구조로 쓰기는 싫었다.

<해결방법>

※ 모두 다 resources/m/ 이라는 곳에 있는 정적 자원을 읽어 올 수 있는 방법이다.

m 디렉토리에 있는 userView.html

1. application.properties에 spring.resources.static-location 값을 지정 해준다.

spring.resources.static-locations=classpath:/m/,classpath:/META-INF/resources/,classpath:/resources/, classpath:/static/, classpath:/public/

2. WebMvcConfigurer을 사용해 설정을 해준다. 

// <WebConfig.java>

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) { // 기본 resourceHandler 유지하면서 추가
        registry.addResourceHandler("/m/**")
                .addResourceLocations("classpath:/m/") // '/'으로 끝나도록
                .setCachePeriod(20);

    }
}

3. thymeleaf를 추가해준다. (제일 편함)

--Gradle--
compile group: 'org.springframework.boot', name: 'spring-boot-starter-thymeleaf', version: '2.3.1.RELEASE'

--Maven--
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
    <version>2.3.1.RELEASE</version>
</dependency>

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기