본문 바로가기

Spring

SpringBoot SpringCloudGateway 초기세팅

728x90
반응형

Intellij ultimate 버전을 사용하면 프로젝트 생성시 Spring Initializr가 있다.

그 기능으로 손쉽게 Spring Boot를 시작할 수 있다.

Community버전을 사용중이라면 아래 링크에서 프로젝트를 손쉽게 만들  수 있다.

 

 

프로젝트 시작

start.spring.io/

 

dependencies에 gateway검색 후 추가해서 Generate하면된다.

 

IntelliJ에서는 File > New > Project 선택 후 Spring Initializr를 선택하면 된다.

SDK 버전을 선택한다. 

 

 

기본적인 프로젝트 세팅을 설정해준다.

maven과 gradle도 선택할 수 있다.

요즘 대세는 gradle이라고 한다.

 

Dependencies에서 Spring Cloud Routing > Gateway 를 선택한다. 

그리고 프로젝트를 생성해주면 기본 설정 끝

 

 

SpringBoot 와 Spring Cloud 호환 버전

build.gradle

plugins {
    id 'org.springframework.boot' version '2.3.6.RELEASE'
    id 'io.spring.dependency-management' version '1.0.10.RELEASE'
    id 'java'
}

group = 'com.demo'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

repositories {
    mavenCentral()
    maven { url 'https://repo.spring.io/milestone' }
}

ext {
    set('springCloudVersion', "Hoxton.SR9")
}

dependencies {
    implementation 'org.springframework.cloud:spring-cloud-starter-gateway'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

dependencyManagement {
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
    }
}

test {
    useJUnitPlatform()
}

사내에서 사용중인 버전으로 맞췄다.

 

bootstrap.yml

spring:
  cloud:
    gateway:
      routes:
        - id: order
          uri: http://localhost:8081
          predicates:
            - Path=/order/**
        - id: shipment
          uri: http://localhost:8082
          predicates:
            - Path=/shipment/**

테스트할 라우팅 정보를 추가했다.

 

bootstrap.yml 에 대한 깨알 정보

bootstrap.yml파일과 application.yml 차이점?

 

bootstrap.yml파일이 application.yml 앞단에서 로드된다.

일반적으로 bootstrap.yml은 부모 Spring Application Context에 의해 로드되는데 

부모 Spring Application Context는 application.yml이 사용되기 전에 로드된다. 

Spring Cloud를 사용하고 애플리케이션 구성이 원격 구성 서버 (예 : Spring Cloud Config Server)에 저장되어있는 경우에만 사용 / 필요하다고 한다.

Config Server를 사용하지 않으면 bootstrap을 안써도 될 것 같다. 

 

 


라우팅할 API서버

라우팅할 서버는 API서버니까 의존성에 Web을 추가한다.

 

build.gradle

plugins {
    id 'org.springframework.boot' version '2.4.0'
    id 'io.spring.dependency-management' version '1.0.10.RELEASE'
    id 'java'
}

version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

test {
    useJUnitPlatform()
}

gradle에 spring-boot-starter-web과 test가 추가된 걸 확인할 수 있다.

 

TestController.java

package hae.scgapi.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RequestMapping("/order")
@RestController
public class TestController {

    @GetMapping("/hello")
    public String hello() throws Exception {
        System.out.println("@@@@");
        return "Hello Test API";
    }

}

 

TestAPI 는 application.properties에 server.port=8081을 추가한다.

정상적으로 routing된걸 확인할 수 있다. 

728x90
반응형

'Spring' 카테고리의 다른 글

Spring Cloud Gateway GatewayFilter  (0) 2020.12.29
Spring Cloud Gateway predicates 테스트  (0) 2020.12.29
Spring Cloud Gateway Actuator enabled 방법  (0) 2020.12.15
JAR 파일 구조  (0) 2020.12.03
SpringBoot logback 설정  (0) 2020.11.24