Eureka 서버 설정
//build.gradle
//스프링클라우드에 대한 버전 지정
ext{
set('springCloudVersion', '2021.0.8')
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-validation'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
⭐implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server'
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
//application.yml
spring:
application:
name: eureka-server
server:
port: 8761
eureka:
client:
# eureka서버가 자기 자신을 eureka에 등록하지 않는 설정
register-with-eureka: false
fetch-registry: false
//EurekaApplication.java
@SpringBootApplication
⭐@EnableEurekaServer
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
Eureka 서버 정상동작 확인
- localhost:8761접속
Item1 Service 설정
//yml 파일
# 유레카 서버에 아래 application.name으로 서비스명을 등록
application:
name: item-service
⭐eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
//build.gradle
//스프링클라우드에 대한 버전 지정
⭐ext{
set('springCloudVersion', '2021.0.8')
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'org.mariadb.jdbc:mariadb-java-client'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
⭐implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
}
⭐dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
//ItemApplication.java
@SpringBootApplication
⭐@EnableEurekaClient
public class OrderingApplication {
public static void main(String[] args) {
SpringApplication.run(OrderingApplication.class, args);
}
}
Item1 Service 설정 및 서버 실행 후
localhost:8761접속확인 시 서버 UP 확인
Item2 Service 설정
Item1과 같이 설정 후 Port8082설정
//application.yml
spring:
datasource:
driver-class-name: org.mariadb.jdbc.Driver
url: jdbc:mariadb://localhost:3306/spring_order
username: root
password: 1234
jpa:
database: mysql
database-platform: org.hibernate.dialect.MariaDBDialect
generate-ddl: true
hibernate:
ddl-auto: update
show-sql: true
# 유레카 서버에 아래 application.name으로 서비스명을 등록
application:
name: item-service
⭐eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
instance:
preferIpAddress: true
hostname: localhost
server:
⭐port: 8082
Item2 Service 설정 및 서버 실행 후
localhost:8761접속확인 시 서버 UP 확인
API-Gateway 설정
//GatewayApplication.java
@SpringBootApplication
⭐@EnableEurekaClient
public class GatewayApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class, args);
}
}
//build.gradle
plugins {
id 'java'
id 'org.springframework.boot' version '2.7.12'
id 'io.spring.dependency-management' version '1.0.15.RELEASE'
}
group = 'com.encore'
version = '0.0.1-SNAPSHOT'
java {
sourceCompatibility = '11'
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
//스프링클라우드에 대한 버전 지정
⭐ext{
set('springCloudVersion', '2021.0.8')
}
repositories {
mavenCentral()
}
dependencies {
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
⭐implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
⭐implementation 'org.springframework.cloud:spring-cloud-starter-gateway'
}
⭐dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
tasks.named('test') {
useJUnitPlatform()
}
//application.yml
server:
port: 8080
⭐spring:
# 유레카 서버에 아래 application.name으로 서비스명을 등록
application:
name: api-gateway
cloud:
gateway:
routes:
- id: item-service #item-service에 대한 정의를 하겠다.
# lb://eureka에 등록된 서비스 명
uri: lb://item-service
# /item-service로 시작하는 url요청이 들어올 경우
predicates:
- Path=/item-service/**
# filters에 StripPrefix=1은 첫번째 접두어 제거
filters:
- StripPrefix=1
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
instance:
preferIpAddress: true
hostname: localhost
API-Gateway설정 및 서버 실행 후
localhost:8761접속확인 시 서버 UP 확인
Eureka Item1, Item2 접속테스트
API-GATEWAY(port:8080)로 접속 후 Item1(port:8081) , Item2(port:8082) 접속 로그 확인
'JAVA STUDY > Spring' 카테고리의 다른 글
[Spring] @EnableGlobalMethodSecurity 간단 사용으로 페이지 권한 관리(With. Item Create) (2) | 2024.02.03 |
---|---|
[Spring] InitialDataLoader로 Spring Boot App실행 시 DB에 데이터 세팅하기 (0) | 2024.02.01 |
[Spring] logback(@slf4j) 라이브러리 사용 로그관리 (0) | 2024.01.29 |
[Spring] Repository IllegalArgumentException에러 조치 (0) | 2024.01.27 |
[Spring initializr] intellij Spring initializr Open & build.gradle setting (0) | 2024.01.12 |