기간
2023/4/3 ~ 2023/4/5

수업
실시간 ZOOM 수업


Day 23(JWT)

단방향 암호화: 인코딩, 동일성체크만 됨 → password(복호화할 필요가 없음)

양방향 암호화: 인코딩, 디코딩

동형암호

Base64: 바이너리 데이터를 문자열로 보내기 위해서 암호화→복호화
⇒ 보안적인 의미에서 쓰는 건 아님


Day 24(AOP)

OOP는 행위로 상태를 변경
→ 행위는 stack 메모리에, 상태는 heap 메모리에 저장

스레드는 heap을 공유
→ 하나의 자원을 두고 경쟁(race condition)
⇒ 해결책: 상태를 안 쓰는 것 → functional programming

그래서 불변 객체(Immutable Object)가 나오고…

AOP는 리플렉션을 해주는 것

JoinPoint
→ 해당 어노테이션을 쓰는 곳의 정보를 가져옴(리플렉션)

AOP 사용하는 법
1. 깃발(어노테이션)생성
2. 깃발에 별칭(Pointcut)주기
3. 공통모듈 생성
4. 공통모듈에 별칭등록하기

이미 만들어져 있는 깃발(어노테이션)으로 등록하기

AOP로 validation하면 편하곘다…

valid에서 @Pattern으로 정규식 쓸 수도 있음

valid에서 에러 생기면 BindingResult(parameter로 RequestBody(dto) 바로 뒤에서) 받음

@Around의 경우 ProceedingJoinPoint를 파라미터로 받으면

공통로직

jp.proceed(); → 어노테이션 단 메소드 실행

공통로직으로 실행할 수 있음

System.out.println("실행 전");
Object result = jp.proceed();
System.out.println("실행 후");
return result;

//실행 전
//result 참조값
//실행 후

할 때 proceed()가 실행할 때 result가 mesageConverter로 동작하는 건 아님

messageConverter를 테스트하려면 @afterReturning 써야 함

interceptor랑 AOP랑 동작할 때는 interceptor가 먼저 동작

profile
웹퍼블리셔의 백엔드 개발자 도전기

0개의 댓글