2023. 2. 1. 00:15, TIL
오늘 진행한 것들 🤔
- 토이 팀 프로젝트
- 예외처리 설계
- 테스트코드 작성법 설계
- 뷰 구현
- 토이 개인 프로젝트
- 코드 리팩토링
- 테스트 코드 작성
- AOP를 활용한 중복 코드 제거 (Validation, 인증)
오늘 겪었던 문제 🤔
- AOP 인증 체크 관련 문제
- Pointcut 을 선언하지 않고, 파라미터를 체크하지 않은 단순 security context holder 에서 authentication 객체를 가져와 체크를 하게되면, authenticationprincipal 객체가 null일때 처리를 못하고 null pointer exception 이 발생하게 되는 문제가 있었다.
- @Before 로 args < 로 principla 객체를 가져와서 모든 메소드에 principal 객체를 (인증이 필요한 메소드) 매개변수로 넣어주고 체크를 해서 처리하도록 했다.
- Pointcut 을 선언하지 않고, 파라미터를 체크하지 않은 단순 security context holder 에서 authentication 객체를 가져와 체크를 하게되면, authenticationprincipal 객체가 null일때 처리를 못하고 null pointer exception 이 발생하게 되는 문제가 있었다.
오늘의 배운점🤔
-
- 팀 프로젝트 설계를 끝냈다.
- 다행히 팀 프로젝트 난이도가 크게 높지 않아서 설계가 예상했던것보다 얼마 안걸렸다.
- 오늘 내가 놀랐던건, 라이브 코딩으로 다른거를 참고하지 않고 테스트 코드에 대해서 팀원들에게 설명을 해주는데 한순간의 막힘도 없이 쭉쭉 써내려가고 있었다 ㄷㄷㄷㄷㄷ
- 한두달전에 비하면 정말 폭풍성장했다는걸 오늘 느꼈다.
- 스프링 AOP 를 알게 되었다.
- 전에는 AOP 관련 강의를 들어도 이해가 전혀 가지 않았는데.. 오늘 드디어 감을 살짝 익혔다.
- 따라서 중복되는 코드들에 적용을 시켜보았다. 전체적으로 봤을때 인증 관련 검증과 (객체가 null인지) binding validation 에서 사용할 수 있을것 같아서 적용시켜보았다.
- 인증 관련은 before 로 메소드 호출 전에 확인을 했고, validation (binding result 타입을 이용한 에러 메세지 전송) 은 around 로 메소드 호출 도중에 체크를 하고, 문제가 없다면 계속 수행하도록 구현했다.
- 코드가 굉장히 짧아졌다.
- 인증 관련은 인터셉터를 이용해서 접근을 가로챌까 생각을 했지만, aop는 단순히 어노테이션 혹은 패키지명을 적어주고 정의만 해주면 클래스 두개로만 처리가 가능했지만, 인터셉터는 각 컨트롤러 별로 클래스를 따로 생성해 관리해야할것 같았다.
- 인터셉터로 게시판까지 처리를 하고, aop를 적용시켰는데 너무 비교가 되어서 aop를 남기고 인터셉터 관련 메소드와 클래스는 제거했다.
- aop의 편의성을 지금 알게되었다.... 지금이라도 알게되서 너무 다행이고 앞으로 코드를 작성할때 얼마나 많은 도움을 받을 수 있고, 한걸음 더 나아가 고민거리를 던져줘서 재미까지 챙겨주는 aop.. 사랑해요
- 팀 프로젝트 설계를 끝냈다.
'TIL' 카테고리의 다른 글
23-02-06 TIL (0) | 2023.02.07 |
---|---|
23-02-01~02 TIL (0) | 2023.02.03 |
23-01-30 TIL (0) | 2023.01.30 |
23-01-29 TIL (0) | 2023.01.30 |
23-01-25~26 TIL (0) | 2023.01.26 |
Comments, Trackbacks