본문 바로가기
728x90
반응형

분류 전체보기529

Chapter2. 아키텍처 개요 상위 계층에서 하위 계층으로의 의존만 존재하고 하위 계층은 상위 계층에 의존하지 않는다. 1. 표현 영역 (Presentation Layer) 사용자 인터페이스(UI)를 담당 사용자와 직접 상호 작용하며, 시각적 요소와 기능을 제공 예시: JSP, Thymeleaf, React, Vue.js 등 2. 응용 영역 (Application Layer) 비즈니스 규칙을 구현 도메인 모델과 상호 작용하여 사용자 요청을 처리 예시: 서비스 클래스, 유틸리티 클래스 등 @Transactional public void cancel(OrderNo orderNo, Canceller canceller) { Order order = orderRepository.findById(orderNo) .orElseThrow(() ->.. 2024. 4. 5.
Chapter1. 도메인 모델 시작하기 도메인 : 소프트웨어로 해결하고자 하는 문제 영역 도메인은 여러 하위 도메인으로 구성된다. 소프트웨어가 도메인의 모든 기능을 제공하지는 않는다. 도메인 모델 : 특정 도메인을 개념적으로 표현한 것 기본적으로 도메인 자체를 이해하기 위한 개념 모델 도메인 모델 패턴 사용자 인터페이스 또는 표현 사용자의 요청을 처리하고 사용자에게 정보를 보여준다. 외부 시스템일 수도 있다. 응용 사용자가 요청한 기능을 실행 도메인 시스템이 제공할 도메인 규칙을 구현 인프라스트럭처 DB 나 메시징 시스템과 같은 외부 시스템과의 연동 처리 도메인 모델 도출 모델을 구성하는 핵심 구성요소, 규칙, 기능을 찾는 것 요구사항 확인하기 엔티티와 밸류 엔티티 엔티티 객체마다 고유해서 각 엔티티는 서로 다른 식별자를 갖는다. 특정 규칙에.. 2024. 4. 5.
3장. 모든 객체의 공통 메서드 아이템10. equals는 일반 규약을 지켜 재정의하라. 언제 사용할까 ? 논리적 동치성을 확인해야 할 때 값 클래스(String, Integer 등) 등 객체가 같은지가 아니라 값이 같은지 알고 싶을 때 다음 상황 중 하나에 해당하면 재정의 하지 않는 것이 최선. 각 인스턴스가 본질적으로 고유하다. 인스턴스의 ‘논리적 동치성’ 을 검사할 일이 없다. 상위 클래스에서 재정의한 equals 가 하위 클래스에도 딱 들어맞는다. 클래스가 private 이거나 package-private 이고 equals 메서드를 호출할 일이 없다. 오버라이딩 시 고려 사항: 비교 대상 필드 모두 비교 null 체크 반사성(reflexivity): 자신과 자신을 비교했을 때 true 반환 대칭성(symmetry): a.equa.. 2024. 4. 3.
2장. 객체 생성과 파괴 아이템1. 생성자 대신 정적 팩터리 메서드를 고려하라. 장점 이름을 가질 수 있다. 호출될 때마다 인스턴스를 새로 생성하지는 않아도 된다. 반환 타입의 하위 타입 객체를 반환할 수 있는 능력이 있다. 입력 매개변수에 따라 매번 다른 클래스의 객체를 반환할 수 있다. 정적 팩터리 메서드를 작성하는 시점에는 반환할 객체의 클래스가 존재하지 않아도 된다. 단점 상속을 하려면 public 이나 protected 생성자가 필요하니 정적 팩터리 메서드만 제공하면 하위 클래스를 만들 수 없다. 정적 팩터리 메서드는 프로그래머가 찾기 어렵다. 핵심정리 정적 팩터리 메서드와 public 생성자는 각자의 쓰임새가 있으니 상대적인 장단점을 이해하고 사용하는 것이 좋다. 그렇다고 하더라도 정적 팩터리를 사용하는 게 유리한 경.. 2024. 3. 30.
현재 열려있는 포트 조회 및 닫기 (macOs) iterms (터미널, 쉘) 을 이용해서 현재 사용하고 있는 PORT 를 조회할 수 있다. lsof -PiTCP -sTCP:LISTEN sudo lsof -PiTCP -sTCP:LISTEN 종료하는 방법은 PID 의 번호와 kill 명령어를 사용한다. kill -9 (PID번호) sudo kill -9 (PID번호) 2024. 3. 24.
Spring Cloud Gateway Config Error 아래와 같은 에러 발생 org.springframework.cloud.gateway.server.mvc.config.GatewayMvcPropertiesBeanDefinitionRegistrar$RouterFunctionHolder pom.xml 설정파일 org.springframework.cloud spring-cloud-starter-gateway-mvc application.yml 파일 server: port: 8000 eureka: client: register-with-eureka: false fetch-registry: false service-url: defaultZone: http://localhost:8761/eureka spring: application: name: apigatewa.. 2024. 3. 24.
Service Discovery ( + Netflix Eureka ) 해당 게시글은 아래 MSA 강의를 참고하였다. ( 섹션 1 , Service Discovery ) https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4/dashboard Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) 강의 - 인프런 Spring framework의 Spring Cloud 제품군을 이용하여 마이크로서비스 애플리케이션을 개발해 보는 과정입니다. Cloud Native Application으로써의 Spring Cloud를 어떻게 사용하는지,.. 2024. 3. 24.
SOA 와 MSA 의 차이 최근에 MSA 에 관련한 강의,자료를 보면서 프로젝트의 크기에 따라 다르겠지만, 규모가 클 수록 MSA 아키텍처로 넘어가는 경우가 많은 것 같다. MSA 는 Cloud 을 통해서 서비스간 자유롭게 개발 및 통신할 수 있으며 서비스간 영향도가 줄어 드는 등 많은 장점을 가지고 있다. MSA 아키텍처를 완성시키기 위해서는 공수가 많이 들어가는 것 뿐만 아니라, 러닝커브가 높고 서비스 유지보수가 가능한지 등에 대한 많은 고민이 필요하다고 생각한다. SOA 는 Service Oriented Architecture 이다. 아래 그림처럼 SOA 는 서비스 공유를 최대화하여 필요한 곳에 공유 및 재사용이 가능한 서비스 중심의 아키텍처이다. MSA 는 MicroService Architecutre 이다. 위의 그림처럼.. 2024. 3. 23.
Null , isEmpty , isBlank 비교 요약 Null : 인스턴스가 생성되지 않은 상태 ( 참조 타입 발생 ) isEmpty : 길이가 0 인 상태면 true isBlank : 문자열이 비어있거나, 빈 공백으로 이루어져 있는 상태면 true 참고 : 검색조건 등 (유효성검사) 에는 StringUtils 의 hasText를 유용하게 사용한다. -> 스프링에서 지원 null 체크, 빈문자열 , 포함여부 모두 && 조건으로 확인한다. null - 참조형의 기본값 - 어떠한 값으로도 초기화 되지 않는 상태 참조형(Reference Type) 은 값을 설정하지 않으면 초기화가 자동으로 null 로 진행된다. 참조타입 : 원시타입을 제외한 타입으로, 객체의 주소를 저장하는 타입. 따라서 아래 테스트 처럼 NPE 를 발생시킨다. @Test @Display.. 2024. 3. 20.
728x90
반응형