데브코스 W4D1

코끼릭·2022년 4월 4일
0

TIL

목록 보기
10/36

Spring

자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로 새로운 시작이라는 뜻으로 시작되어 현재는 다양한 생태계를 구축하고 있다. 스프링은 제어의 역전(Invertion of Control), 스프링 컨테이너를 이용한 의존관계 주입(Dependency Injection)을 통해 객체지향 설계 원칙의 특징인 다형성을 활용할 수 있도록 도와줘 코드에 대한 유지보수와 변경을 쉽게 할 수 있도록 한다. 이와 같이 동적인 웹사이트를 개발하기 위한 풍부한 서비스를 제공하고 있어 대한민국 공공기관의 웹 서비스 개발시 사용을 권장하는 전자정부 표준 프레임워크 기반 기술로 쓰이고 있다.

Spring Boot

스프링이 다양한 기능을 지원하는 만큼 복잡한 환경설정을 간단하게 해주기 위해 나온 것이 바로 스프링 부트다. 많은 설정을 자동화해서 디펜던시만 추가해주면 필요한 설정파일과 프로젝트 구조를 생성해 주기 때문에 추가적인 설정으로 인한 번거로움을 덜어준다.

Spring Boot CLI

CLI로 cmd에서 필요한 스프링 기반 프로젝트 파일을 생성할 수 있는 것으로 스프링 부트 사이트와 같이 필요한 디펜더시와 빌드 툴 등을 지정한 명령어를 실행하면 자동으로 설정된 프로젝트 파일을 생성해준다.

>>프로젝트 생성 명령어
spring init --dependencies=web --java-version=[자바 버전] --type=gradle-project [디렉터리명]

>>사용 예시
spring init --dependencies=web --java-version=17 --type=gradle-project demo

DDD(Domain Driven Design)

소프트웨어로 해결하고자 하는 문제 영역(서비스)을 도메인이라고 부르고 도메인 모델이란 특정 도메인을 개념적으로 표현한 것이다. 도메인은 애플리케이션의 아키텍처는 4개의 계층 중 하나의 구성 계층이다.

  • 표현 계층: 사용자의 요청을 처리하고 정보를 보여준다.
  • 응용 계층: 요청한 기능을 실행한다.
  • 도메인 계층: 시스템이 제공할 도메인의 규칙을 구현한다.
  • 인프라 스트럭쳐 계층: 외부 시스템과의 연동을 처리한다.

도메인 모델을 도출하기 위해서는 모델을 구성하는 핵심 구성요소인 규칙을 찾고 이를 표현한 주요 데이터와 기능을 포함하는 하나의 객체로 구현하는 것에 있다.

Entity & Value

Entity는 다른 엔티티와 구별할 수 있는 식별자를 가지고 있고 시간에 흐름에 따라 지속적으로 변경될 수 있는 객체를 지칭한다. 여기서 식별자는 다음 4가지 방식 중 한 가지 방식으로 생성되는게 일반적이다.

  • 특정 규칙에 따라 생성
  • UUID 사용
  • 값을 직접 입력
  • 일련번호 사용(시퀀스나 DB의 자동 증가 칼럼 사용)

Value Object는 각 속성이 개별적으로 변화하지 않고 값 그 자체로 고유한 불변 객체를 말한다. 따라서 Value Object의 데이터의 변경은 기존 데이터를 변경하기 보다는 변경한 데이터를 갖는 새로운 Value Object를 생성하는 방식을 선호하고 이를 통해 안전한 코드를 작성할 수 있게 된다.

주문 도메인을 구현한 객체 예시
public class Order {
	private int id;
    private String custormer
    private String address;
	private List<OrderLine> orderLines;
	
	private void setOrderLines(List<OrderLine> orderLines) { ... }
	private void calculateTotalAmounts() { ... }

	...
}

도메인 모델

profile
ㅇㅅㅇ

0개의 댓글