8-2. Spring Boot

동동주·2024년 6월 6일
0

spring 기말고사

목록 보기
2/11

🥠 Thymeleaf template

<div th:unless="${#lists.isEmpty(books)}">		<!-- books 리스트가 empty가 아니면 -->
  <dl th:each="book: ${books}">		<!--반복문, books 리스트에 포함된 각 book 객체 처리 -->
    ...

☑️ #lists는 Thymeleaf가 제공하는 객체 중 하나

🥠 Application property 설정

# 실행되는 SQL query를 console에 출력
spring.jpa.properites.hibernate.show_sql=true

# SQL query를 가독성 좋게 formatting
spring.jpa.properties.hibernate.format_sql=true

# 데이터베이스 초기화 전략: 기존 테이블 재생성 및 종료 시 삭제 (default)
spring.jpa.hibernate.ddl-auto=create-drop

# SQL query에 대한 binding parameter 값 출력
logging.level.org.hibernate.type.descriptor.sql=trace

🥠 addViewControllers

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/shop/index.do").setViewName("index");
    registry.addViewController("/shop/signonForm.do").setViewName("SignonForm");
    }
  • 위 예시는 URL /shop/index.do 에 대한 요청이 들어왔을 때, index이라는 이름의 view를 보여줌

🥠 addInterceptors

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

    @Autowired
    private CustomInterceptor customInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // CustomInterceptor를 모든 요청 경로에 대해 적용
        registry.addInterceptor(customInterceptor).addPathPatterns("/**");
    }
}
  • registry.addInterceptor(customInterceptor): CustomInterceptor를 인터셉터 체인에 추가합니다.
  • .addPathPatterns("/**"): 이 인터셉터를 모든 URL 경로에 대해 적용합니다.

🌠 인터셉터는 주로 다음과 같은 메서드를 가지고 있습니다:

  • preHandle: 컨트롤러의 핸들러 메서드가 실행되기 전에 호출됩니다.
  • postHandle: 컨트롤러의 핸들러 메서드가 실행된 후, 뷰가 렌더링되기 전에 호출됩니다.
  • afterCompletion: 뷰가 렌더링된 후 호출됩니다.
public class CustomInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
        // 요청이 컨트롤러에 도달하기 전에 실행되는 코드
        System.out.println("Pre Handle method is Calling");
        return true; // true를 반환하면 다음 인터셉터 또는 컨트롤러로 요청이 전달됩니다.
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
                           ModelAndView modelAndView) throws Exception {
        // 컨트롤러의 메서드가 실행된 후, 뷰가 렌더링되기 전에 실행되는 코드
        System.out.println("Post Handle method is Calling");
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
            throws Exception {
        // 뷰가 렌더링된 후 실행되는 코드
        System.out.println("Request and Response is completed");
    }
}
  • 이 설정을 통해, 모든 HTTP 요청에 대해 CustomInterceptor가 동작하게 됩니다. 각 요청은 컨트롤러로 전달되기 전에 preHandle 메서드가 호출되고, 컨트롤러 메서드가 실행된 후 postHandle 메서드가 호출되며, 뷰가 렌더링된 후 afterCompletion 메서드가 호출됩니다.


📤 출처: https://engineerinsight.tistory.com/79#%F0%9F%92%8B%20WebMvcConfigurer%20%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4%20%EB%9C%AF%EC%96%B4%EB%B3%B4%EA%B8%B0-1

0개의 댓글