코드 훔쳐보는 변태 코더
춤 좋아하는 백엔드 개발자(였으면 좋겠다)
23-01-31 TIL

오늘 진행한 것들 🤔

  • 토이 팀 프로젝트
    • 예외처리 설계
    • 테스트코드 작성법 설계
    • 뷰 구현
  • 토이 개인 프로젝트
    • 코드 리팩토링
    • 테스트 코드 작성
    • AOP를 활용한 중복 코드 제거 (Validation, 인증)

팀프로젝트 로그인 페이지
개인 토이프로젝트 테스트 코드 작성

 

오늘 겪었던 문제 🤔

  • AOP 인증 체크 관련 문제
    • Pointcut 을 선언하지 않고, 파라미터를 체크하지 않은 단순 security context holder 에서 authentication 객체를 가져와 체크를 하게되면, authenticationprincipal 객체가 null일때 처리를 못하고 null pointer exception 이 발생하게 되는 문제가 있었다.
      • @Before 로 args < 로 principla 객체를 가져와서 모든 메소드에 principal 객체를 (인증이 필요한 메소드) 매개변수로 넣어주고 체크를 해서 처리하도록 했다.

오늘의 배운점🤔

    • 팀 프로젝트 설계를 끝냈다.
      • 다행히 팀 프로젝트 난이도가 크게 높지 않아서 설계가 예상했던것보다 얼마 안걸렸다.
      • 오늘 내가 놀랐던건, 라이브 코딩으로 다른거를 참고하지 않고 테스트 코드에 대해서 팀원들에게 설명을 해주는데  한순간의 막힘도 없이 쭉쭉 써내려가고 있었다 ㄷㄷㄷㄷㄷ
      • 한두달전에 비하면 정말 폭풍성장했다는걸 오늘 느꼈다.
    • 스프링 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