내일배움캠프 #22 #Spring 8일차

김한준 Hanjun Kim·2023년 11월 9일
0

내일배움캠프

목록 보기
22/70

고민

배운것들을 잘 활용해서 프로젝트를 만들 수 있을까?
지금까지 배웠던걸 적재적소에 넣어서..
오늘 배운 것만 해도 그렇고 그때그때 생각이 날까

-> 튜터님 : 문법은 막 그렇게 자세하게 알지는 않는다
어느 상황에 쓰고 어떻게 쓰는지를 안다

물고기 잡는 법을 아는거랑 같은 말인가

  • 알고리즘 스터디 시작
    알고리즘 하루 한 문제! 매주 목요일 2시30분에 모여서 스터디하기

왜 조장인것..

! JPA, 주입 계속 머리속에 안붙네!

! JPA를 하기 위해서는 엔티티 클래스 객체를 만들어야 함

! DB의 한 로우는 해당하는 엔티티 클래스의 한 객체다!

! 생성자를 통해서 만듬


학습 정리

보통 강의를 들으면서 프로젝트 안에 주석으로 메모를 정리하기 때문에,

깃허브 링크

를 올릴 생각이다.

JWT 다루기

깃허브 링크 (아직)

    1. gradle 수정
    2. JWT Secret Key 추가
  • 로그 설정 = 로깅 한다
    로깅 : 어플리케이션이 동작하는동안 프로젝트의 상태나 동작 정보를 시간 순으로 기록하는 것
    @Slf4j

  • @Component : 필요한 곳에서 사용할 수 있게 Bean으로 등록,
    가져오는법 :

  1. 생성자 주입
    private final JwtUtil jwtUtil;

    public AuthController(JwtUtil jwtUtil) {
        this.jwtUtil = jwtUtil;
    }
  2. Lombok
    @RequiredArgsConstructor ?

  • get-jwt는 좀 신기하네

회원가입 구현

  • Spring MVC 배울 때 index, login, signup 이름 뒤에 html 붙은거 찾아주는거 배웠음

  • @Enumerated : Enum타입을 데이터베이스에 저장할때 사용

  • 비밀번호는 암호화를 해야 한다

  1. 서버에서 패스워드 암호화
    : 평문 -> 암호화 알고리즘 -> 암호문
  2. DB에 저장된 아이디, 패스워드(암호문) 과 일치 여부 확인
  • 회원가입 API
    회원가입 페이지 : GET
    회원가입 : POST

  • Spring data Jpa 사용하기 때문에 extends JpaRepository

  • ADMIN_TOKEN : 일반 사용자인지, 관리자인지 구별하기 위해
    보통은 관리자 페이지 따로 구현함

@GeneratedValue(strategy = GenerationType.IDENTITY) // autoIncresement


챌린지반 3일차

  • AOP
    :공통된 기능을 재사용하는 기법
    = 횡단 관심사
    OOP : 비즈니스 로직의 모듈화
    AOP : 인프라 혹은 부가기능의 모듈화

  • AOP 적용 방식

    • 컴파일 시점
    • 클래스 로딩 시점
    • 런타임 시점(<- 스프링 많이 씀)
  • 고려해야 할 것

  1. 어떤 로직 이전에 실행할 지 지정 -> join point + pointcut -> target
  2. AOP로 무슨 로직을 실행할 지 -> advice + aspect(AOP 클래스 지정)
  • @Aspect로 클래스 감싸고 @Around로 메서드 감싸기
    joinPoint.proceed() 해서 전체 / 특정 메서드 실행 로깅 확인 가능!

  • @Before @After


  • h2로 변경??

  • advice 리턴값이 object인데 보통 어떤 식으로 사용하시나요?

    -> 보통 joinPoint를 리턴하는식으로 사용한다.
    joinPoint를 리턴받은 result를 암호화 시켜줄 수도 있다.

  • 적용 시점이 마음대로 하는게 편하다. AOP 프록시가 성능 저하를 일으킨다?

참고자료

profile
개발이 하고싶은 개발지망생

0개의 댓글