[6/19 TIL] SPRING(SPRING BOOT, 핵심 개념, DDD)
🍃프로그래머스 백엔드 데브코스 4기 교육과정을 듣고 정리한 글입니다.🍃
Spring Boot
- SpringApplication을 통한 손쉬운 실행
- Auto Configuration
- Properties, YAML, Command line 설정 등으로 쉬운 외부 환경 설정
- 프로파일을 통한 실행환경 관리
- Packaging Executable Jar
- Developer Tools
Spring 핵심 개념
공식문서 참고
- Spring IoC 컨테이너와 Beans
- 리소스 핸들링 (Resource와 ResourceLoader)
- 벨리데이션과 데이터 바인딩과 타입 변환
- 스프링 expression 언어
- AOP
- Null-safety
- 데이터 버퍼와 코덱
- 로깅
Domain Driven Design
예시
- Customer(고객) 엔티티: 각 고객은 고유한 식별자(ID)와 개인 정보를 가지며, 여러 개의 Account(계좌)와 연결됨
- Account(계좌) 엔티티: 각 계좌는 고유한 계좌 번호(Account Number)와 잔액(Balance)을 가지며, 특정 고객과 연관되고, 입금(Deposit)과 출금(Withdraw) 메서드를 통해 잔액을 변경 가능
- Deposit(입금) 값 객체: 입금에 대한 정보를 표현하는 값 객체로, 입금할 계좌와 입금액을 포함
- Withdraw(출금) 값 객체: 출금에 대한 정보를 표현하는 값 객체로, 출금할 계좌와 출금액을 포함
Entity
- 식별자를 가지며, 개체의 생명주기를 따름
- 식별자에 의해 구분되며, 두 엔티티는 동일한 속성을 가지더라도 서로 다른 개체로 취급
- 상태 변경이 가능하며, 비즈니스 로직과 행위를 가짐
- 주로 시스템에서 중요한 개념이고, 데이터베이스에서 테이블로 표현
- 예시: 고객은 식별자를 가지며, 개인 정보와 관련된 상태를 포함하고 여러 행위를 수행함
Value Object
- 식별자가 없고 불변(Immutable)
- 주로 엔티티의 속성을 표현하거나, 엔티티 간의 관계를 나타내는 데 사용
- 데이터베이스에서 별도의 테이블로 표현되지 않음
- 예시: 주소는 도시, 우편번호 등 속성들로 구성되며 개별적으로 식별되지 않고, 속성들의 조합으로만 의미를 갖음
그림 출처 바로가기