-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feat/#76 아키텍처 정의에 따른 패키지 및 클래스 이름 변경 #77
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
EmailService -> EmailSender S3MediaManager -> S3MediaService
smartandhandsome
force-pushed
the
feat/#76
branch
from
November 2, 2023 09:55
d7ed563
to
c64cc74
Compare
yumyeonghan
approved these changes
Nov 2, 2023
smartandhandsome
changed the title
Feat/#76 EmailService, S3MediaService
Feat/#76 아키텍처 정의에 따른 패키지 및 클래스 이름 변경
Nov 2, 2023
1o18z
approved these changes
Nov 2, 2023
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
이슈번호
close: #76
close: #78
작업 내용 설명
패키지 구조 및 아키텍처 정의
리뷰어에게 한마디
아키텍처 정의
각 Layer 정의
Presentation Layer
: 외부 Client와 상호 작용하는 Layer. 외부에서 들어온 값을 검증한다. 외부의 요청에 알맞는 응답을 보낸다. Service Layer에 있는 적합한 행위를 선택하여 값을 전달한다.Service Layer
: 비즈니스 로직을 작성하는 Layer. 필요하다면@Transactional
을 관리한다. 아래에 있는 Implement Layer에서 필요한 행위를 통해 비즈니스 로직을 완성시킨다.Implement Layer
: 비즈니스 로직을 작성하기 위한 상세 구현 로직을 갖고 있는 Layer. 여러 Service Layer에서 많이 의존하고 범용성이 높아 재사용성이 많은 Layer.@Component
어노테이션을 붙인다.Infrastructure
: 외부의 Data 혹은 통신을 위한 Layer. MySQL, Redis 혹은 S3 같은 Data에 접근, 생성, 수정 등을 담당, 외부 Server와 의 통신, DAO를 갖고 있어야 한다. ex) JpaRepository (X), SimpleJpaRepository (O)경계간 매핑
Client ↔ Presentation Layer
: final class OOOHttp 내부 record로 Request, Response가 존재한다. (입력이나 반환 값이 없으면 해당 record 생략, suffix는 Http로 고정)Service ↔ Controller
: Controller에서 조작하는 Service의 메서드의 반환 값은 XXXXDto, Controller에서 Service로 데이터를 보낼 때는 커스텀 객체가 아닌 순수 자바가 정의한 클래스로 보낸다. 추후 Service에 전달하는 매개 변수가 많이 진다면 리팩토링 한다.Service, Implement
: Domain 객체를 직접 다룰 수 있다.Infrastructure
: Entity 따로 두지않고 Repository는 Domain을 의존한다. 외부와 통신하는 Client는 응답 값을 받는 객체로 OOODetail을 둔다. (suffix Detail 고정)규칙