<aside> 🔐 스프링 프레임워크는 어떤 특징 혹은 장점을 가지고 있나요? (3가지 이상)

</aside>

  1. 객체지향 프로그래밍 (OOP) 에 기반

    1. 서버 개발 시 크게 3계층으로 나누어 구현 가능 (Controller, Service, Repository)

    2. 클래스 1개를 선언하여 재사용 가능

    3. 모듈화가 잘 되어 있어, 필요한 모듈들만 레고처럼 조립하여 사용 가능

      ex) 스프링 시큐리티, 스프링 타임리프 등

  2. DI (의존성 주입) 지원

    1. DI 통해 강한결합의 문제점을 해결
  3. 비즈니스 로직에 집중하게 해 줌

    1. 웹 서버에서는 비즈니스 로직이 가장 중요한 구현 부분

    2. 비즈니스 로직 외에 다른 부분은 스프링 프레임워크가 쉽게 구현 가능하도록 도움을 줌

      1. Client 와의 communication 역할을 하는 Controller
      2. DB 와의 communication 역할을 하는 Spring Data JPA

      Untitled

  4. 그 외 가능한 답변들

    1. AOP 지원
    2. 테스트 코드 작성 수월함
    3. 20여년 동안 발전한 프레임워크
      1. 개발 편의성이 계속 나아짐
      2. 많은 기업에서 사용하며 입증된 신뢰성

<aside> 🔐 스프링에서 DI (의존성 주입) 를 사용하는 이유가 무엇인가요? 예를 통해 설명 해 보세요.

</aside>

<aside> 🔐 스프링 시큐리티를 사용해 회원관리하는 방법을 순서도를 통해 정리해 보세요.

</aside>

  1. 회원가입

    Untitled

    1. Client → Server
      1. 회원가입에 필요한 정보 (username, password, email 등)
    2. Server
      1. 회원가입 처리
        1. 중복 회원 ID 확인
        2. 패스워드 암호화
        3. 회원 역할 설정 (USER, ADMIN)
    3. Server → DB
      1. 회원정보 DB 에 저장
  2. 로그인

    Untitled

    1. Client → Server
      1. 로그인에 필요한 정보 (username, password)
    2. Server
      1. 로그인 처리
        1. 회원 DB 에서 username 을 가진 회원정보 가져옴
          1. 회원 정보가 없으면 에러 발생
        2. 회원 DB 의 username, password 와 Client 에서 전달받은 username, password 가 동일한지 비교
    3. Server → Session
      1. 로그인 성공 시 Session 에 저장
    4. Server → Client
      1. Session 쿠키 전달 (JSESSIONID)
    5. Client
      1. Session 쿠키 저장
  3. 로그인 이후 로그인 상태 유지 방법

    Untitled

    1. Client 에서 Server 에 API 요청할때마다 Session 쿠키를 전달

<aside> 🔐 개발자 테스트 코드 작성 시 장/단점과 테스트 종류 별 (단위 테스트, 통합 테스트, E2E 테스트) 로 특징은?

</aside>

  1. 개발자 테스트