Skip to content

Comments

Mission 3#70

Open
minjukoo wants to merge 18 commits intocodeit-bootcamp-spring:mainfrom
minjukoo:mission-3
Open

Mission 3#70
minjukoo wants to merge 18 commits intocodeit-bootcamp-spring:mainfrom
minjukoo:mission-3

Conversation

@minjukoo
Copy link
Collaborator

요구사항

기본

  • 기본 항목 1
  • 기본 항목 2

심화

  • 심화 항목 1
  • 심화 항목 2

주요 변경사항

  • 아키텍처 전환: 순수 Java 기반의 의존성 관리 방식에서 Spring IoC 컨테이너 기반으로 전환하여 객체 생명주기 관리를 자동화했습니다.
  • 데이터 보안 및 가독성: DTO를 적극 도입하여 패스워드 등 민감 정보를 차단하고, Instant 타입을 사용하여 시간 데이터의 정밀도와 가독성을 높였습니다.
  • 유저 상태 시스템: 마지막 활동 시간을 추적하여 5분 이내 활동 시 온라인으로 간주하는 로직을 UserStatusService에 구현했습니다.

Spring 핵심 개념 이해하기

1. IoC Container (제어의 역전)

  • JavaApplication: 개발자가 직접 new 키워드를 사용하여 서비스와 레포지토리 객체를 생성하고 조립했습니다.
  • DiscodeitApplication: Spring 프레임워크가 객체의 생성과 의존성 주입을 담당합니다. 개발자는 설정(Annotation)만 제공하고 실제 인스턴스 관리는 IoC 컨테이너가 수행합니다.

2. Dependency Injection (의존성 주입)

  • JavaApplication: 생성자 호출 시 수동으로 레포지토리 객체를 인자로 넘겨주었습니다.
  • DiscodeitApplication: @RequiredArgsConstructor와 Spring의 기능을 통해 필요한 의존성을 컨테이너로부터 주입받습니다. 이를 통해 클래스 간의 결합도를 낮추고 유연한 확장이 가능해졌습니다.

3. Bean (빈)

  • Spring IoC 컨테이너에 의해 관리되는 재사용 가능한 자바 객체를 의미합니다.
  • 본 프로젝트에서는 @Service, @Repository 어노테이션을 사용하여 각 구현체들을 Bean으로 등록하였으며, 설정 파일의 값에 따라 특정 구현체(JCF/File)를 선택적으로 빈으로 등록하도록 구성했습니다.

스크린샷

image image image image

멘토에게

  • UserStatusService에서 유저 존재 여부를 검증한 후 상태를 생성/업데이트하는 과정에서 예외 처리를 꼼꼼히 챙기려 노력했습니다.
  • application.yaml 설정에 따라 Bean이 동적으로 바뀌는 구조를 구현했는데, 이 방식이 실무에서도 자주 쓰이는 형태인지 궁금합니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant