AOP, 예외처리, Transaction
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
- httpStatus: HTTP 상태코드
- errorCode: 에러 코드
- 에러 종류별로 Unique 한 에러코드를 소유
- errorMessage
- 대표 에러 메시지
14. Quiz
OOP 복습
- 객체지향 프로그래밍 (Object-Oriented Programming)
- 하나의 파일 (AllInOndeContoller)로 모든 기능 수행 가능
- 관심사 별로 분히 ==> 코드 이해와 유지보수 수월 / Controller, Service, Repository
- 더 분리 가능 ex) ProductService의 createProduct()함수
OOP : 핵심 기능을 모듈화
AOP : 부가 기능을 모듈화