이벤트 구성 요소이벤트(Event)도메인 모델의 상태 변화를 나타내는 사건이벤트 생성 주체(Event Creator)엔티티, 밸류, 도메인 서비스 등의 도메인 객체로, 도메인 로직을 수행해서 상태가 변경될 때 관련 이벤트를 발생시킴.이벤트 디스패처(Event Dispatcher/Publisher)이벤트 생성 주체가 발생시킨 이벤트를 적절한 이벤트 핸들러에게 전달하는 역할이벤트의 생성과 처리를 동기 또는 비동기 방식으로 선택적으로 처리가능이벤트 핸들러(Event Handler/Subscriber)이벤트에 반응하여 특정 기능을 수행하는 구성요소주문 취소됨 이벤트 를 받는 이벤트 핸들러의 경우 주문 취소 사실을 주문자에게 SMS 으로 전달이 가능하다.이벤트예시이벤트 의 구성 요소이벤트 종류이벤트 발생 시간추가..
이벤트(Event)의 정의이벤트(Event)과거에 발생한 어떤 사건을 의미함.예사용자가 암호를 변경한 경우 → '암호 변경됨 이벤트' 발생주문이 취소된 경우 → '주문 취소됨 이벤트' 발생이벤트와 UI 개발UI 컴포넌트는 관련된 이벤트를 발생시킨다,예버튼 클릭 → '버튼 클릭됨 이벤트' 발생스크롤 동작 → '스크롤 됨 이벤트' 발생이벤트 발생은 상태 변경을 의미합니다.'암호 변경됨 이벤트'는 사용자의 암호 변경을 의미합니다.'주문 취소됨 이벤트'는 주문 취소를 의미합니다.이벤트 기반 프로그래밍이벤트는 단순히 발생하는 것에 그치지 않고, 이벤트에 반응하여 원하는 동작을 수행하는 기능을 구현합니다.예시 코드 (jQuery 사용):$("#myBtn").click(function(evt) { alert("경고"..
문제 상황상황한 주문 애그리거트에 대해 운영자가 배송 상태로 변경하려고 하는 동안 사용자가 배송지 주소를 변경한다면 어떤 문제가 발생할까?상황 설명운영자 스레드:주문 애그리거트를 구함배송 상태로 변경트랜잭션 커밋고객 스레드:주문 애그리거트를 구함배송지 변경트랜잭션 커밋충돌!문제점운영자와 고객이 동시에 같은 주문 애그리거트를 수정할 때 발생한다.트랜잭션마다 리포지터리는 새로운 애그리거트 객체를 생성한다.운영자 스레드와 고객 스레드는 같은 주문 애그리거트를 나타내지만물리적으로 다른 객체를 사용한다.같은 Order라도 서로 다른 메모리주소를 가지며,속성도 다를 수 있음.운영자 스레드가 주문 애그리거트 객체를 배송 상태로 변경해도, 고객 스레드가 사용하는 객체에는 영향을 주지 않는다.고객 스레드는 주문 애그리거..
문제 상황@Entity public class Order { @Id private Long id; @Version private Long version; @OneToMany(mappedBy = "order", cascade = CascadeType.ALL, orphanRemoval = true) private List orderLines; // 기타 필드와 메서드 } @Entity public class OrderLine { @Id private Long id; private String product; private int quantity; @ManyToOne private Order order; // 기타 필드와 메서드 }@Service public class OrderService { @Persis..
Authorize HttpServletRequests with AuthorizationFilter :: Spring SecurityThis version is still in development and is not considered stable yet. For the latest stable version, please use Spring Security 6.2.1!https://docs.spring.io/spring-security/reference/5.7-SNAPSHOT/servlet/authorization/authorize-http-requests.html#page-titleAuthorizationFilter?인증된 요청이 특정 자원에 대한 접근 권한을 가지고 있는지 확인하는 역할임스프링 필터..
Swagger UI 와 Spring RestDocs 의 장 단점의 비교Swagger UI 의 장점직관적인 UI스웨거는 API 에 대한 요청과 응답 등을 시각적으로 표현하여 사용자가 쉽게 이해할 수 있습니다실시간 테스트API 엔드포인트에 대한 실시간 테스트를 제공합니다.Swagger UI 의 단점어노테이션 수동 기입 기반 API어노테이션 등을 수기로 기입하여 문서를 생성하기에, 코드와 문서간의 불일치가 발생할 수 있다.유지 보수의 문제성API 변경시마다 스웨거 어노테이션을 수정해야한다.복잡코드가 진짜~ 너무 더럽다어노테이션때문에 불필요하게 컨트롤러단과 DTO 단에서 피로함이 가중된다.Spring Rest Docs 의 장점정확성테스트 코드를 기반으로 문서를 생성하기에 코드와 문서간 일관성 유지가 가능하다가볍..