사랑해 마니마니

스프링 부트 마이크로서비스 - 도메인 본문

spring boot in action

스프링 부트 마이크로서비스 - 도메인

분리불안증후군 2018. 4. 21. 17:08

요구사항

1) Multiplication: 곱셈을 하기 위해 필요한 Factor를 보관 2) User: 곱셈을 풀기로한 사용자 3) MultiplicationResultAttempt: Multiplication과 User에 대한 참조치를 가지고 있으며, 결과를 보관

immutable

Multiplication class는 Immutable임

Lombok 추가하기

buildig.gradle에 Lombok dependency 추가

compileOnly('org.projectlombok:lombok')

롬복은 Annotation 기반인데 Design time에도 동작해야 개발이 수월함
그래서 IDE도 설정을 해줘야 함.

1. Lombok plugin 설치: Preferences > Plugins > Browse repositories.. > Lombok 검색 > Install > restart
2. Design time에 롬복 동작 설정: Preferences > Compiler > Annotation Processors > Enable annotaion processing 체크

Multiplication.java에 Lombok 적용해서 간단하게 만들기

  1. 생성자 > @RequiredArgsConstruction

  2. Getter > @Getter

  3. ToString > @ToString

  4. Equal, HashCode (이건 코딩 안했는 데.. 그래도 설정하기) > @EqualsAndHashCode

package microservices.book.multiplication.domain;

import lombok.*;

@Getter
@ToString
@EqualsAndHashCode
@RequiredArgsConstructor
public class Multiplication {

    // Both factors
    private final int factorA;  //@RequiredArgsConstructor이 동작하기 위해서는 @NonNull or final 필드
    private final int factorB;
    private int result;

    // Empty constructor for JSON (de)serialization
    Multiplication() {
        this(0, 0);
    }

    /* @RequiredArgsConstructor로 대체
    public Multiplication(int factorA, int factorB) {
        this.factorA = factorA;
        this.factorB = factorB;
        this.result = factorA * factorB;
    }
    */

    /* @Getter로 대체
    public int getFactorA() {
        return factorA;
    }

    public int getFactorB() {
        return factorB;
    }

    public int getResult() {
        return result;
    }
    */

    /* @ToString로 대체
    @Override
    public String toString() {
        return "Multiplication{" +
                "factorA=" + factorA +
                ", factorB=" + factorB +
                ", result=" + result +
                '}';
    }
    */
}

'spring boot in action' 카테고리의 다른 글

Business Logic Layer 추가하기  (0) 2018.05.01
도메인 디자인 하기  (0) 2018.05.01
3Tier 로 고치기  (0) 2018.04.21
Microservice @spring boot  (0) 2018.04.21
Bootstrap WebJar 사용하기  (0) 2018.01.14
Comments