728x90
    
    
  도메인 모델 정의
회원정보 도메인은 데이터 구조상 무결성과 불변성을 가지고 있어야 한다.
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@Getter
public class Membership {
    private String membershipId;
    private String name;
    private String email;
    private String address;
    private boolean isValid;
    private boolean isCorp;
1. @AllArgsConstructor의 사용 :
@AllArgsConstructor(access = AccessLevel.PRIVATE)은 클래스의 필드를 초기화하는 생성자를 자동으로 생성하고, private로 접근 수준을 지정하여 클래스 외부에서 직접 생성자를 호출하지 못하도록 막는다.
    @Value
    public static class MembershipId {
        public MembershipId(String value) {
            this.membershipId = value;
        }
        String membershipId;
    }
    @Value
    public static class MembershipName {
        public MembershipName(String value) {
            this.nameValue = value;
        }
        String nameValue;
    }
    @Value
    public static class MembershipAddress {
        public MembershipAddress(String value) {
            this.addressValue = value;
        }
        String addressValue;
    }
    @Value
    public static class MembershipEmail {
        public MembershipEmail(String value) {
            this.emailValue = value;
        }
        String emailValue;
    }
    @Value
    public static class MembershipIsValid {
        public MembershipIsValid(boolean value) {
            this.isValidValue = value;
        }
        boolean isValidValue;
    }
    @Value
    public static class MembershipIsCorp {
        public MembershipIsCorp(boolean value) {
            this.isCorpValue = value;
        }
        boolean isCorpValue;
    }
2. @Value로 내부 클래스 생성 :
불변성을 갖춘 값을 생성. 외부에서 사용할 수 있는 객체를 생성하고 읽을 수 있도록 한다.
    public static Membership generateMember(
            MembershipId membershipId,
            MembershipName membershipName,
            MembershipAddress membershipAddress,
            MembershipEmail membershipEmail,
            MembershipIsValid membershipIsValid,
            MembershipIsCorp membershipIsCorp
    ) {
        return new Membership(
                membershipId.membershipId,
                membershipName.nameValue,
                membershipAddress.addressValue,
                membershipEmail.emailValue,
                membershipIsValid.isValidValue,
                membershipIsCorp.isCorpValue
        );
    }
3. generate 메서드:
generateMembership메서드는 정적 메서드로 외부에서 호출이 가능하다. 이 메서드를 통해 입력된 값을 사용하여, 새로운 Membership 객체를 생성한다. 즉, 이 객체를 통해 신규 회원 정보를 저장할 수 있다.
'개발 방법론' 카테고리의 다른 글
| MSA(마이크로 서비스 아키텍처) 멤버서비스 서비스층 개발 [6] (0) | 2023.12.19 | 
|---|---|
| MSA(마이크로 서비스 아키텍처) 멤버서비스 인바운드 포트 [5] (0) | 2023.12.19 | 
| MSA(마이크로 서비스 아키텍처) 멤버서비스 인바운드 어댑터 [4] (1) | 2023.12.19 | 
| MSA(마이크로 서비스 아키텍처)의 멀티 모듈과 DDD(도메인 주도 설계) [2] (0) | 2023.12.18 | 
| MSA(마이크로 서비스 아키텍처)란? [1] (1) | 2023.12.18 |