본문 바로가기

JAVA/Spring Boot

스프링 부트 기본설정

반응형

스프링 부트에서 웹 자원들을 실행하기 위한 규약

스프링 부트는 기본적으로 Runnable jar로 실행되므로 WAR 규격에 맞춰서 WEB-INF 폴더를 만들거나 webapp 폴더를 만들지 않고 웹 자원들을 사용하기 위한 몇가지 규약을 제공한다.

 

- 정적 파일 - src/main/resources/static
- 웹 페이지 대표 아이콘 - src/main/resources/favicon.ico
- 템플릿 - src/main/resources/templates

 

웹 자원들을 해당 규약에 맞는 곳에 두면, 웹을 위한 별도의 폴더를 만들지 않고 사용할수 있다.

웹 리소스 폴더 설정

스프링 부트의 기본 설정 대신 javaConfig 클래스파일을 만들어서 설정을 추가할수 있다.

@Configuration  
public class WebConfig extends WebMvcConfigurerAdapter {    
    @Override  
    public void addResourcesHandlers(ResourceHandlerRegistry registry) {  
        registry.addResourceHandler("/asserts/**")  
        .addResourceLocations("classpath:/asserts/","/asserts/");  
    }    
}

정적페이지로 이동 설정

페이지에 데이터를 추가로 전달하지 않고 페이지와 URL 연결만 필요한 경우에는 addViewControllers 메서드를 이용한다.

    @Override  
    public void addViewControllers(ViewControllerRegistry registry) {  
        registry.addViewController("/").setViewName("home");  
    }  

interceptor 사용

public class ExecuteTimeInterceptor extends HandlerInterceptorAdapter {  

    @Override  
    public boolean preHandler(HttpServletRequest request, HttpServletResponse response, 
        Object handler) throws Exception{  
            long startTime = System.currentTimeMillis();  
              request.setAttribute("startTime", startTime);  
              String reqUri = request.getRequestURI();  
              return ture;  
    }   

    @Override  
    public void postHandler(HttpServletRequest request, HttpServletResponse response,  
        Object handler, ModelAndView modelAndView) throws Exception{  
              long startTime = (Long)request.getAttribute("startTime");  
              long endTime = System.currentTimeMillis();  
              long executeTime = endTime - startTime;  
              request.setAttribute("executeTime", executeTime);  
    }   
}  

interceptor 등록

@Configuration  
public class WebConfig extends WebMvcConfigurerAdapter {  

    @Bean  
    public ExecuteTimeInterceptor executeTimeInterceptor() {  
        return new ExecuteTimeInterceptor();  
    }  

    @Override  
    public void addInterceptors(InterceptorRegistry registry) {  
        registry.addInterceptor(executeTimeInterceptor())  
            .addPathPatterns("/**")  
            .excludePathPatterns("/");  
    }  

}

출저 - 스프링 부트로 배우는 자바 웹 개발
저자 - 윤석진

반응형

'JAVA > Spring Boot' 카테고리의 다른 글

Spring Data JPA 사용 및 설정  (0) 2020.08.22
REST API  (0) 2020.08.21
스프링부트 보안 OAuth2  (0) 2018.04.12
스프링 부트 보안 (예제)  (0) 2018.04.07
스프링부트 웹 개발 (샘플)  (0) 2018.04.06