본문 바로가기

Programming

(208)
도메인 모델링 3가지 개념 도메인 모델링 비즈니스 사용자의 편의성을 어떻게 개선할수 있을까? '어떤 조건이 주어졌을때(when), 이런작업을 한다(then)' 같은 간단한 조합을 규칙으로 지정할수 있게 한다. 이 도메인에는 세가지 개념이 있다. 조건: 어떤 팩트에 적용할 조건(참이나 거짓으로 평가됨) 액션: 실행할 연산이나 코드 집합 규칙: 조건과 액션을 합친것, 조건이 참일때만 액션을 실행한다. 조건 @FunctionalInterface public interface Condition { boolean evaluate(Facts facts); } 규칙 @FunctionalInterface public inference Rule { void perform(Facts facts); } 규칙의 개념 모델링 public class De..
메이븐 멀티 프로젝트 구성 예제에서 참고한 메이븐 멀티 프로젝트 구성 taco-cloud-parent pom.xml 4.0.0 sia taco-cloud-parent 0.0.7-SNAPSHOT pom org.springframework.boot spring-boot-starter-parent 2.0.4.RELEASE 1.8 1.8 ${project.version} tacos tacocloud-api tacocloud-data tacocloud-domain tacocloud-restclient tacocloud-security tacocloud-web tacocloud-ui 모듈 구성 tacos pom.xml 4.0.0 taco-cloud jar taco-cloud Taco Cloud Example sia taco-cloud-par..
스프링 부트로 배우는 자바 웹 개발 이책에 사용하는 스프링 부트의 버전은 1.5.8버전이다. 현재 스프링 부트는 2.3.3 버전이다. 어느정도 버전의 차이가 있지만, 스프링 부트의 개념을 잡고 간다면 꼭 읽어봐야 한다. 스프링부트가 나오기 까지 변화와 흐름을 이해하기 쉽게 설명되어 있다. 서블릿 -> 스프링 -> 스프링부트 스프링 부트로 개발하고 배포, 모니터링 등 쉽게 풀어서 설명하고 있다. 반복해서 읽어도 지루하지 않다.^^ 스프링 부트로 배우는 자바 웹 개발 / 저자 - 윤석진
테스트 주도 개발 시작하기 TDD의 입문 책이라고 소개하고 있다. - TDD 경험이 없는분 - 경험이 있으나 실패했던 분 - 경험했으나 동료들에게 알려주고 싶은분 TDD란 무엇인가부터 시작해서 암호검사기 기능을 예제로 쉽게 풀어서 설명한다. 따라면서 테스트에 대한 감을 익히게 하고, 여러 규칙을 리스트화 하여 하나씩 풀어나갈수 있게 된다. 실무에서도 개발 기능의 요구사항이 변경시, 작성한 코드를 다시 수정하고 테스트를 해봐야 하는데, 테스트코드를 만들었다면 변경된 요구사항만 수정하여 테스트를 검증하고, 수정에 따른 사이드 이팩트가 있는지 확인해볼수 있게 된다. 그러므로 테스트 코드는 중요하고, 필수다. 테스트 주도 개발 시작하기 / 저자 - 최범균
Spring Data JPA 사용 및 설정 Spring Data JPA 설정 org.springframework.boot spring-boot-starter-data-jpa 데이터 저장소로 h2 사용 com.h2database h2 1.4.200 test JDBC를 지원하고 라이브러리 추가만으로 사용 가능하므로 로컬에서 개발시에 많이 쓰인다. Spring Data JPA의 Repository 구조 스프링을 사용할때 자바 클래스들은 ApplicationContext를 사용하여 빈으로 등록하고 콘텍스트를 통해 제어하는 것처럼 ORM을 사용할때는 엔티티 매니저로 영속성 콘텍스트를 제어해서 자바 객체와 데이터베이스 간의 데이터 통신 및 동기화 제어를 수행한다. 엔티티 매니저의 기능을 보다 쉽게 사용할수 있도록 Repository 인터페이스를 제공하고 R..
REST API REST API 1) 모델 클래스 생성 package ee.swan.web.dto; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor public class Todo { private int id; private String title; }2) 컨트롤러 클래스 생성 package ee.swan.web; import ee.swan.web.dto.Todo; import java.util.concurrent.atomic.AtomicInteger; import org.springframework.web.bind.annotatio..
스프링 부트 기본설정 스프링 부트에서 웹 자원들을 실행하기 위한 규약 스프링 부트는 기본적으로 Runnable jar로 실행되므로 WAR 규격에 맞춰서 WEB-INF 폴더를 만들거나 webapp 폴더를 만들지 않고 웹 자원들을 사용하기 위한 몇가지 규약을 제공한다. - 정적 파일 - src/main/resources/static - 웹 페이지 대표 아이콘 - src/main/resources/favicon.ico - 템플릿 - src/main/resources/templates 웹 자원들을 해당 규약에 맞는 곳에 두면, 웹을 위한 별도의 폴더를 만들지 않고 사용할수 있다. 웹 리소스 폴더 설정 스프링 부트의 기본 설정 대신 javaConfig 클래스파일을 만들어서 설정을 추가할수 있다. @Configuration public..
카프카 이벤트 소싱 이벤스 소싱? 이벤트 소싱은 상태의 변화 하나하나를 이벤트로 취급하여 발생하는 이벤트를 순서대로 기록해두는것이다. 사용자는 기록된 이벤트에서 도메인 객체를 구체화할수 있으며 경위도 확인할수 있다. (DBMS의 트랜잭션 로그(WAL: Write Ahead Log)의 레코드 쓰기) 카프카는 데이터를 모두 추상적인 '로그'로 취급하고, 받은 메시지는 로그에 순차적으로 기록되기 때문에 카프카의 아키텍처 그 자체가 이벤트 소싱에 적합하다. CQRS? Command Query Responsibility Segregation(커맨드 쿼리 책임 분리)란 데이터의 갱신과 문의 처리를 분리하는 개념의 아키텍처이다. 커맨드란 데이터의 update/create/delete 등의 데이터 갱신 처리에 해당. 쿼리란 데이터의 문의..