Spring

공부/Spring

토비의 스프링 부트 - 독립 실행형 스프링 애플리케이션-2

스프링 컨테이너로 통합 현재 코드는 스프링 컨테이너를 만들고 서블릿을 초기화하는 작업을 스프링 컨테이너가 초기화되는 과정 중에 일어나도록 코드를 변경해보자. 이유는 스프링부트가 그렇게 사용하고 있다. 스프링 컨테이너의 초기화 작업은 refresh()에서 일어난다. applicationContext.refresh(); refresh() 전에 호출되는 onRefresh()를 사용하려면 GenericWebApplicationContext를 상속받아서 오버라이딩 해야한다. 클래스를 따로 만들기보다는 익명 클래스를 사용하여 오버라이딩 한다. public class HellobootApplication { public static void main(String[] args) { GenericWebApplicatio..

공부/Spring

토비의 스프링 부트 - 독립 실행형 스프링 애플리케이션-1

스프링 컨테이너 사용 기존 소스 코드 정리 FrontController의 로직 중 'else if~' 구문 삭제 HTTP Status Code 세팅 코드 삭제 (에러가 나지 않는 한 알아서 200 OK 코드가 붙어 나간다.) 즉, 생략가능 HTTP Header에 세팅한 Content-Type 부분 setContentType() 메서드로 변경. 이러면 header ID를 생략하고 값만 넣으면 됨 public class HellobootApplication { public static void main(String[] args) { TomcatServletWebServerFactory serverFactory = new TomcatServletWebServerFactory(); // 다양한 서버 프로그램을 ..

공부/Spring

토비의 스프링 부트 - 독립 실행형 서블릿 애플리케이션

Containerless 개발 준비 내장형 톰캣을 실행하지 않도록 HellobootApplication.java에서 일부 코드를 삭제한다. package tobyspring.helloboot; public class HellobootApplication { public static void main(String[] args) { } } 서블릿 컨테이너 띄우기 톰캣은 설치를 해서 사용할 수도 있지만 내장형 톰캣도 따로 있어 설치하지 않고 임베디드 형식으로 사용할 수 있게 개발되었다. 스프링 부트는 https://start.spring.io/ 에서 프로젝트를 생성하면 프로젝트에 자동으로 임베디드 톰캣 라이브러리가 포함된다. 그럼 프로젝트에서 내장형 톰캣을 불러와 사용해보자. 톰캣 라이브러리를 직접 가져오는게..

공부/Spring

토비의 스프링 부트 - 스프링 부트 시작하기

프로젝트 생성 Spring Boot 버전은 2.7.10을 선택, Dependency는 Spring Web 선택, Java 버전은 11을 선택했다. Hello 컨트롤러 HelloController 생성 hello() 작성 @GetMapping("/hello") public String hello(String name) { return "hello " + name; } 서버 실행 후 확인 Hello API 테스트 HTTP 요청을 만들고 응답을 확인하는데 사용되는 도구 웹 브라우저 개발자 도구 curl HTTPie - https://httpie.io/ Homebrew 설치가 되어 있으면 'brew install httpie' 커맨드로 설치 가능Intellij IDEA Ultimate- http request ..

공부/Spring

Spring Cloud로 개발하는 마이크로서비스 애플리케이션_Catalogs and Orders Microservice_4

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) Orders Microservice 기능 마이크로서비스 URI(API Gateway 사용 시) HTTP Method 상품 목록 조회 Catalogs Microservice /catalog-service/catalogs GET 사용자 별 상품 주문 Orders Microservice /order-service/{user_id}/orders POST 사용자 별 주문 내역 조회 Orders Microservice /order-service/{user_id}/orders GET 프로젝트 생성 강의에서는 Spring Boot 버전을 2.4.2를 선택했고, 나는 3.0.4 버전을 선택했다. Model Mapper 라이브러리 추가 build.gra..

공부/Spring

Spring Cloud로 개발하는 마이크로서비스 애플리케이션_Catalogs and Orders Microservice_3

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) Catalogs Microservice 프로젝트 생성 강의에서는 스프링부트 버전을 2.4.2로 선택, 나는 3.0.3으로 선택했다. build.gradle ModelMapper dependancy 추가 implementation 'org.modelmapper:modelmapper:2.4.2' application.yml server: port: 0 spring: application: name: catalog-service h2: console: enabled: true settings: web-allow-others: true path: /h2-console jpa: hibernate: ddl-auto: create-drop show..

공부/Spring

Spring Cloud로 개발하는 마이크로서비스 애플리케이션_Catalogs and Orders Microservice_2

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) Users Microservice - 사용자 조회 User의 전체 사용자 목록과 상세 정보 보기 기능을 추가해보자. UserController의 각 메서드 uri 매핑 주소에 prefix 격으로 '/user-service/'가 들어간다. 그러므로 클래스 블럭에 있는 @RequestMapping() 어노테이션에 해당 uri를 기재하고, 각 메서드 XXXMapping()에 적혀있는 '/user-service/'는 지워주자. @RequestMapping("/user-service/") public class UserController { ... } ResponseUser vo에 회원 주문 목록을 볼 수 있도록 필드를 하나 추가한다. 아직 R..

공부/Spring

Spring Cloud로 개발하는 마이크로서비스 애플리케이션_Catalogs and Orders Microservice_1

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) Users Microservice와 Spring Cloud Gateway 연동 Controller에서 port 출력 @GetMapping("/health_check") public String status() { return String.format("It's Working in User Service on PORT %s", env.getProperty("local.server.port")); } apigateway-service 프로젝트 route 정보 입력 application.yml routes: - id: user-service uri: lb://USER-SERVICE predicates: - Path=/user-service/..

공부/Spring

Spring Cloud로 개발하는 마이크로서비스 애플리케이션_Users Microservice-1-2

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) Users Microservice - JPA① build.gradle_validation dependency 추가 implementation 'org.springframework.boot:spring-boot-starter-validation' VO 생성 @Data public class RequestUser { @NotNull(message = "Email cannot be null") @Size(min = 2, message = "Email not be less than two characters") @Email private String email; @NotNull(message = "Name cannot be null") @Si..

공부/Spring

Spring Cloud로 개발하는 마이크로서비스 애플리케이션_Users Microservice-1-1

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) Users Microservice 개요 APIs 기능 URI(API Gateway 사용 시) URI(API Gateway 미사용 시) HTTP Method 사용자 정보 등록 /user-service/users /users POST 전체 사용자 조회 /user-service/users /users GET 사용자 정보, 주문 내역 조회 /user-service/users/{user_id} /users/{user_id} GET 작동 상태 확인 /user-service/users/health_check /users/health_check GET 환영 메시지 /user-service/users/welcome /users/welcome GET U..

공부/Spring

Spring Cloud로 개발하는 마이크로서비스 애플리케이션_E-commerce 애플리케이션

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) E-commerce 애플리케이션 너무 복잡한 애플리케이션을 만들진 못하고 간단하게 세 가지의 마이크로 서비스를 만들어보자. CATALOG-SERVICE USER-SERVICE ORDER-SERVICE 전체적인 애플리케이션 구성 전체적인 애플리케이션 구성 구성요소 설명 Git Repository 마이크로서비스 소스 관리 및 프로파일 관리 Config Server Git 저장소에 등록된 프로파일 정보 및 설정 정보 Eureka Server 마이크로서비스 등록 및 검색 API Gateway Server 마이크로서비스 부하 분산 및 서비스 라우팅 Microservices 회원 MS, 주문 MS, 상품(카테고리) MS Queuing System..

공부/Spring

Spring Cloud로 개발하는 마이크로서비스 애플리케이션_API Gateway Service_7

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) Spring Cloud Gateway - Load Balancer Eureka 설정 dependencies 확인(gradle) - 세 개 프로젝트에 모두 적용 implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client' application.yml 설정 - 세 개 프로젝트에 모두 적용 eureka: client: register-with-eureka: true fetch-registry: true service-url: defaultZone: http://localhost:8761/eureka 아래 코드는 apigateway-service 프로..

공부/Spring

Spring Cloud로 개발하는 마이크로서비스 애플리케이션_API Gateway Service_6

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) Spring Cloud Gateway-Logging Filter Global Filter와 비슷한 Logginfg Filter를 작성해보자. 그럼 이 프로젝트에 적용된 필터는 3개이다. Custom Filter, Global Filter, Logging Filter. 이 필터들의 순서는 다음과 같다. Global Filter PRE Custom Filter PRE Logging Filter PRE Logging Filter POST Custom Filter POST Global Filter POST LoggingFilter.java 생성 @Override public GatewayFilter apply(Config config) { G..

공부/Spring

Spring Cloud로 개발하는 마이크로서비스 애플리케이션_API Gateway Service_5

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) Spring Cloud Gateway - Custom Filter 적용 CustomFilter.java 생성 @Component @Slf4j public class CustomFilter extends AbstractGatewayFilterFactory { public CustomFilter() { super(Config.class); } @Override public GatewayFilter apply(Config config) { // Custom Pre Filter return (exchange, chain) -> { ServerHttpRequest request = exchange.getRequest(); ServerHttpRe..

공부/Spring

Spring Cloud로 개발하는 마이크로서비스 애플리케이션_API Gateway Service_4

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) Spring Cloud Gateway - Filter 적용(Java 소스) 자바 코드로 필터 설정을 하기 위해 application.yml에 설정했던 route 관련 설정을 주석처리한다. spring: application: name: apigateway-service # cloud: # gateway: # routes: # - id: first-service # uri: http://localhost:8081/ # predicates: # - Path=/first-service/** # - id: second-service # uri: http://localhost:8082/ # predicates: # - Path=/second-s..

데부한
'Spring' 태그의 글 목록