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 |