SpringBoot Day04

doldol_kim·2020년 4월 20일
0

SpringBoot

목록 보기
1/2

리다이렉트 : 요청한 자원을 주는게 아니라, 새로운 자원을 돌려주는 것

정적 요청

클라이언트(웹 브라우저) 요청 웹서버

                        -------------------------------------------------------> abc.gif

                              응답 (200 OK, 404 Not Found)

     abc.gif      <---------------------------------------------------------- 

동적 요청

<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<Pattern>%d %5p [%c] %m%n</Pattern>
		</encoder>
</appender>

Appender의 종류

  • ConsoleAppender : 로그를 콘솔에 출력
  • RollingFileAppender : 로그를 파일로 만들어서 출력

Pattern 요소

  • %d : 로그 기록 시간
  • %5p : 로깅 레벨(5자리 유지)
  • %m : 로그 메시지
  • %n : 개행
  • %c : 로깅이 발생한 카테고리

Statement

  • Statement :
  • PreparedStatement : 안전한 쿼리 실행을 보장하기 위함
  • CallableStatement : DB에 정의되어 있는 Stored Procedure를 호출해서 실행

인터셉터(Intercepter)

  • Filter = Servlet Filter → J2EE 표준 스펙에 포함
  • Dispacther Servlet : 요청 분개
  • Intercepter : 스프링 프레임워크에서 제공하는 기능
  • HandlerInterceptorAdapter : 스프링에서 인터셉터를 구현할 때 사용
    • preHandle : 컨트롤러 실행 전에 수행
    • postHandle : 컨트롤러 수행 후 결과를 뷰로 내보내기 전에 수행
    • afterCompletion : 뷰 작업까지 완료된 후 수행

인터셉터를 등록 → 스프링 4.0 이상에서는 자바 기반의 설정을 지원

인터셉터의 기능을 AOP를 이용해서 로그를 남길 수 있음

AOP : 어플리케이션 전반에서 사용되는 기능을 여러 코드에 쉽게 적용할 수 있도록 하는 것

  • 컨트롤러, 서비스, Mapper의 메서드가 실행될 때 각 메서드의 경로와 이름을 로그로 출력

트랜잭션 적용하기 (@Transactional)

@Bean
	public PlatformTransactionManager transactionManger() throws Exception{
		return new DataSourceTransactionManager(dataSource());
	}

이러한 Bean이 있으면 @Transactional 적용이 가능하다.

AOP를 이용하여 트랜잭션 설정

많이 길다..

@Transactional vs AOP

  • @Transactional
    • 장점 : 쉽고 간단하다. 원하는 곳에만 트랜잭션을 적용.
    • 단점 : 개발자의 실수로 누락될 수 있음, 외부 라이브러리에 적용이 불가능 하다
  • AOP
    • 장점 : 공통으로 적용되므로 누락이 발생하지 않음, 외부 라이브러리에 적용이 가능하다(pointcut으로 적용)
    • 단점 : 성능에 영향을 미친다. 원하는 곳에만 적용하기 힘들다.

예외처리

  • try / catch
  • Controller 단에서 @ExceptionHandler 어노테이션 사용
  • @ControllerAdvice를 이용한 전역 예외처리
profile
김돌돌입니다

0개의 댓글