Skip to content

Commit d023120

Browse files
committed
docs: 요구사항 삭제 (코드에 집중할 수 잇도록)
1 parent 8fd1599 commit d023120

File tree

1 file changed

+0
-102
lines changed
  • codeit-bootcamp-spring/1-sprint-mission

1 file changed

+0
-102
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,102 +0,0 @@
1-
프로젝트 마일스톤
2-
3-
- Java 프로젝트를 Spring 프로젝트로 마이그레이션
4-
- 의존성 관리를 IoC Container에 위임하도록 리팩토링
5-
- 비즈니스 로직 고도화
6-
기본 요구사항
7-
Spring 프로젝트 초기화
8-
- [x] Spring Initializr를 통해 zip 파일을 다운로드하세요.
9-
- [x] 빌드 시스템은 Gradle - Groovy를 사용합니다.
10-
- [x] 언어는 Java 17를 사용합니다.
11-
- [x] Spring Boot의 버전은 3.4.0입니다.
12-
- [x] GroupId는 com.sprint.mission입니다.
13-
- [x] ArtifactId와 Name은 discodeit입니다.
14-
- [x] packaging 형식은 Jar입니다
15-
- [x] Dependency를 추가합니다.
16-
- [x] Lombok
17-
- [x] Spring Web
18-
- [x] zip 파일을 압축해제하고 원래 진행 중이던 프로젝트에 붙여넣기하세요. 일부 파일은 덮어쓰기할 수 있습니다.
19-
- [x] application.properties 파일을 yaml 형식으로 변경하세요.
20-
- [x] DiscodeitApplication의 main 메서드를 실행하고 로그를 확인해보세요.
21-
22-
23-
---
24-
25-
Bean 선언 및 테스트
26-
- [x] File*Repository 구현체를 Repository 인터페이스의 Bean으로 등록하세요.
27-
- [x] Basic*Service 구현체를 Service 인터페이스의 Bean으로 등록하세요.
28-
- [x] JavaApplication에서 테스트했던 코드를 DiscodeitApplication에서 테스트해보세요.
29-
- [x] JavaApplication 의 main 메소드를 제외한 모든 메소드를 DiscodeitApplication클래스로 복사하세요.
30-
- [x] JavaApplication의 main 메소드에서 Service를 초기화하는 코드를 Spring Context를 활용하여 대체하세요.
31-
32-
```java
33-
// JavaApplication
34-
public static void main(String[] args) {
35-
// 레포지토리 초기화
36-
// ...
37-
// 서비스 초기화
38-
UserService userService = new BasicUserService(userRepository);
39-
ChannelService channelService = new BasicChannelService(channelRepository);
40-
MessageService messageService = new BasicMessageService(messageRepository, channelRepository, userRepository);
41-
42-
// ...
43-
}
44-
45-
// DiscodeitApplication
46-
public static void main(String[] args) {
47-
ConfigurableApplicationContext context = SpringApplication.run(DiscodeitApplication.class, args);
48-
// 서비스 초기화
49-
// TODO context에서 Bean을 조회하여 각 서비스 구현체 할당 코드 작성하세요.
50-
UserService userService;
51-
ChannelService channelService;
52-
MessageService messageService;
53-
54-
// ...
55-
}
56-
```
57-
58-
- [x] JavaApplication의 main 메소드의 셋업, 테스트 부분의 코드를 DiscodeitApplication클래스로 복사하세요.
59-
```java
60-
public static void main(String[] args) {
61-
// ...
62-
// 셋업
63-
User user = setupUser(userService);
64-
Channel channel = setupChannel(channelService);
65-
// 테스트
66-
messageCreateTest(messageService, channel, user);
67-
}
68-
```
69-
70-
Spring 핵심 개념 이해하기
71-
- [ ] JavaApplication과 DiscodeitApplication에서 Service를 초기화하는 방식의 차이에 대해 다음의 키워드를 중심으로 정리해보세요.
72-
IoC Container
73-
Dependency Injection
74-
Bean
75-
76-
77-
Lombok 적용
78-
- [x] 도메인 모델의 getter 메소드를 @Getter로 대체해보세요.
79-
- [x] Basic*Service의 생성자를 @RequiredArgsConstructor로 대체해보세요.
80-
81-
82-
비즈니스 로직 고도화
83-
- [ ] 다음의 기능 요구 사항을 구현하세요.
84-
85-
추가 기능 요구사항
86-
시간 타입 변경하기
87-
- [ ] 시간을 다루는 필드의 타입은 Instant로 통일합니다.
88-
- 기존에 사용하던 Long보다 가독성이 뛰어나며, 시간대(Time Zone) 변환과 정밀한 시간 연산이 가능해 확장성이 높습니다.
89-
90-
**새로운 도메인 추가하기**
91-
- [ ] 공통: 앞서 정의한 도메인 모델과 동일하게 공통 필드(id, createdAt, updatedAt)를 포함합니다.
92-
- [ ] ReadStatus
93-
- 사용자가 채널 별 마지막으로 메시지를 읽은 시간을 표현하는 도메인 모델입니다. 사용자별 각 채널에 읽지 않은 메시지를 확인하기 위해 활용합니다.
94-
- [ ] UserStatus
95-
- 사용자 별 마지막으로 확인된 접속 시간을 표현하는 도메인 모델입니다. 사용자의 온라인 상태를 확인하기 위해 활용합니다.
96-
- [ ] 마지막 접속 시간을 기준으로 현재 로그인한 유저로 판단할 수 있는 메소드를 정의하세요. 마지막 접속 시간이 현재 시간으로부터 5분 이내이면 현재 접속 중인 유저로 간주합니다.
97-
- [ ] BinaryContent
98-
- 이미지, 파일 등 바이너리 데이터를 표현하는 도메인 모델입니다. 사용자의 프로필 이미지, 메시지에 첨부된 파일을 저장하기 위해 활용합니다.
99-
- [ ] 수정 불가능한 도메인 모델로 간주합니다. 따라서 updatedAt 필드는 정의하지 않습니다.
100-
- [ ] User, Message 도메인 모델과의 의존 관계 방향성을 잘 고려하여 id 참조 필드를 추가하세요.
101-
- [ ] 각 도메인 모델 별 레포지토리 인터페이스를 선언하세요.
102-
레포지토리 구현체(File, JCF)는 아직 구현하지 마세요. 이어지는 서비스 고도화 요구사항에 따라 레포지토리 인터페이스에 메소드가 추가될 수 있어요.

0 commit comments

Comments
 (0)