Framework/Spring

AOP, 예외처리, Transaction

sandbackend 2022. 10. 11. 01:52

AOP

Aspect-Oriented Programming

 

용어

- Target : 어떤 대상에 부가 기능을 부여 할 것인가

- Adive : 어떤 부가 기능? Before, AfterReturning, AfterThrowing, After, Around

- Join point : 어디에 적용할 것인가? 메서드,필드,객체,생성자 등

- Point cut : 실제 advice가 적용될 지점, Spring AOP에서는 advice가 적용될 메서드 선정

 

 

aop사용 시간은 컨트롤러와 가장 가까운곳

api사용시간 측정방법

스크래치파일 사용

System.currentTimeMills(); Long타입으로 반환

 

03. Top5 회원 찾기 설계 및 구현

Optional : NULL값이 들어갈수도 있는 경우를 지원해줌.

컨트롤러 - 오가는 시간을 알아본다.

try-finally

try : 실제수행할내용

finally : 무조건 실행되어야할 명령

@Secured : 관리자만 접근 할수 있게 해주는 어노테이션

 

 

04. AOP

관심상품 등록하기 , 중요한것처럼. 많은 api에 동일한 로직 --> 막아보자 / 부가기능 모듈화

핵심기능 / 부가기능

부가기능 : 어드바이스 + 적용위치: 포인트컷 --> Aspect

Aspect Oriented Programming : 

 

 

05. 스프링 AOP 적용

aop > UseTimeAop

 

 

06. 스프링 AOP 이해

핵심기능의 수행전, 수행후, 혹은 두경우모두

1)@Aspect

2)어드바이스 종류,,

3)포인트컷 : 부가기능이 실행되는 범위

세분화 하면 함수명갖고도 제어 

부가기능은 여러 핵심기능을 횡단한다.!

 

Transaction

07. 중복 폴더명 예외처리 설계 및 구현

예외및메세지 발생 / 중복된걸 빼

예외 발생시, 삭제

해결1) 저장된 포더들 삭제

해결2) 트랜잭션 (@Transaction)을 이용 

 

 

08. 트랜잭션의 이해

데이터베이스를 사용할때 쓰는 용어

논리적인 정합성을 지키기위한 쪼갤수 없는 하나의 작업단위를 의미한다.

원자성, 일관성, 고립성, 지속성 - ACID

정ㅇ의돈 모든작업이 성공해야 DB에 반영된다. 모두성공시 Commit   / 실패 Rollvack

 

 

09.  @Transsation의 정체

방법1) 어노테이션없이 직접 = 비효율, 그치만 비지니스로직에 포함됨.

 

DB운영

11. DB 운영 방식 (Primary, Replica)

데이터 생성, 조회 / 훼손 가능성 / 안정성 향상 / 쓰기전용 / 읽기전용

- Primary / Replica 운영방식

: 쓰기 전용 DB (Primary) 와 읽기 전용 DB (Replica) 를 구분

  • Primary: 쓰기 전용
    • @Transactional 의 readOnly 속성
  •  Replica (Secondary): 읽기 전용

 

 

 

12. 스프링 예외 처리 방법

http 전달 응답 / 상태코드 / 헤더 / 본문

상태코드

1) 2 성공, 4 클라이언트, 5 서버

트러블 슈팅~

 

스피링 예외 처리 방법

 

@ExceptionHandler

 

 

13. 스프링 Global 예외 처리 방법

글로벌 = 전역적  /  전체에 예외처리 왜? / AOP개념 / 전체를 관리할수있다

 

에러메세지에 구체화. 트러블 슈팅 용이함

 

@Controller Advice 사용

@RestControllerAdvice

  @Controller + @ResponseBody

 

  1. httpStatus: HTTP 상태코드
  2. errorCode: 에러 코드
    1. 에러 종류별로 Unique 한 에러코드를 소유
  3. errorMessage
    1. 대표 에러 메시지

 

14. Quiz

OOP 복습

- 객체지향 프로그래밍 (Object-Oriented Programming)

- 하나의 파일 (AllInOndeContoller)로 모든 기능 수행 가능

- 관심사 별로 분히 ==> 코드 이해와 유지보수 수월 / Controller, Service, Repository

  - 더 분리 가능 ex) ProductService의 createProduct()함수

 

OOP : 핵심 기능을 모듈화

AOP : 부가 기능을 모듈화