오늘 배운 것 :
OOP 리마인드
IntelliJ 스크레치 파일 만들어서 노는 법
Intellij 메뉴에서 File > New > Scratch File → Java 선택
Spring Boot에서 AOP를 위해 Proxy 사용하는 법
@Aspect & @Around, Before, After, AfterReturning, AfterThrowing
@Around("이 안에는 AOP 하려는 클레스 경로 EL 넣으면 됨")
(포인트컷 EL도 있는데 필요할 때나 찾아보자)
ResponseEntity로 API별로 예외처리 한글로 커스텀해서 던질 때도 AOP 적용해서
@ControllerAdvice, @RestControllerAdvice 어노테이션 달고
Exception 클레스 만들어서 HttpStatus, errorCode, errorMessage 멤버로 만들어서 정의해놓고 던지면 됨
Transaction
AS-IS: 기존 동작
TO-BE: 변경 동작
@Transactional 붙여주면 지가 알아서 메소드 내에서 ACID 원칙 잘 지킴
현업에서 DB는 고장날 가능성이 있으므로 여러개 씀
쓰기가 가능한 메인 DB는 Primary, 읽기만 가능한 보조 DB는 Replica라고 부름
@Transactional(readOnly = false)
기능을 사용해 무엇을 사용할지 endpoint를 정해놓고 바꿀 수 있음
수십년 동안 통용되던 용어가 '노예제'와 관련된다는 이유로 대체됨
마스터 (Master) → Primary
슬레이브 (Slave) → Replica, Secondary
(네이밍 멋있어 진 듯)
- OOP VS AOP
- OOP 는 핵심기능을 모듈화
- AOP 는 부가기능을 모듈화
- 부가기능의 예
- API 시간 측정, 트랜잭션, 예외처리, 로깅 등
- AOP 는...
- OOP 를 "대체": X
- OOP 를 "보완": O
느낀 점:
처음 보는 객체 너무 많고 intelliJ 환경설정 너무 어렵고
미니 프로젝트 하면서 숙련시켜야 할 듯
아쉬웠던 점:
틀딱클립스를 살려주세요