프로젝트 생성

  1. Spring Initializr(https://start.spring.io/)로 접속한다.

  2. Project는 Gradle - Groovy, Language는 Java, Spring Boot 버전은 3.4.10으로 안정화된 버전으로 선택(3.5.6 버전 선택 시 스프링 클라우드가 2025.0 버전으로 의존성이 맞춰지게 되는데 구조가 많이 변경되므로 구 버전을 선택 합니다)

  3. Project Metadata는 프로젝트에 맞게 적절하게 입력합니다.

  4. Dependencies는 Spring Boot DevTools와 Lombok, Prometheus, Spring Cloud Config Client, Eureka Discovery Client, Spring Cloud LoadBalancer, Spring Web, Validation, OAuth2 Client, OAuth2 Resource Server, Spring Boot Actuator 를 선택

  5. GENERATE 버튼을 클릭하여 프로젝트를 생성합니다.

    스크린샷 2025-10-22 오후 3.13.33.png

  6. 추가 의존성을 포함 build.gradle에 포함 시킵니다.

    keycloak-admin-client, resilience4j, zipkin, rabbitMQ, loki 등

    dependencies {
    	implementation 'org.springframework.boot:spring-boot-starter-actuator'
    	implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
    	implementation 'org.springframework.boot:spring-boot-starter-oauth2-resource-server'
    	implementation 'org.springframework.boot:spring-boot-starter-validation'
    	implementation 'org.springframework.boot:spring-boot-starter-web'
    	implementation 'org.springframework.cloud:spring-cloud-starter-config'
    	implementation 'org.springframework.cloud:spring-cloud-starter-loadbalancer'
    	implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
      implementation 'org.springframework.boot:spring-boot-starter-amqp'
      implementation 'org.springframework.cloud:spring-cloud-starter-stream-rabbit'
      implementation 'org.springframework.retry:spring-retry'
      implementation 'org.springframework:spring-aspects'
      implementation 'io.micrometer:micrometer-tracing-bridge-brave'
      implementation 'io.zipkin.reporter2:zipkin-reporter-brave'
      implementation 'com.github.loki4j:loki-logback-appender:2.0.0'
      implementation 'org.keycloak:keycloak-admin-client:26.0.7'
    	compileOnly 'org.projectlombok:lombok'
    	developmentOnly 'org.springframework.boot:spring-boot-devtools'
    	runtimeOnly 'io.micrometer:micrometer-registry-prometheus'
    	annotationProcessor 'org.projectlombok:lombok'
    	testImplementation 'org.springframework.boot:spring-boot-starter-test'
    	testImplementation 'org.springframework.security:spring-security-test'
    	testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
    }
    
  7. 프로젝트 폴더 관리의 편의를 위해 폴더명을 전체 패키지명으로 변경합니다.

    스크린샷 2025-10-22 오후 3.23.05.png

설정하기

application.xml

server:
  port: 3006

spring:
  application:
    name: user-service
  config:
    import: 'optional:configserver:'
  cloud:
    config:
      discovery:
        enabled: true
        service-id: config-server

eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: <http://localhost:3101/eureka/>

logback.xml