[Spring Boot] Spring Boot로 프로덕션 환경 배포 준비하기 - (2) Configuration Properties

2023. 9. 2. 19:23기술 창고/Spring

728x90
SMALL

어플리케이션의 복잡한 설정을 지정하는 방법에 대해서 알아보겠습니다.
현재 통신하고 있는 통화 서비스가 있고, 이 서비스의 여러 값을 설정한다고 가정해보겠습니다.

 

 

위의 이미지와 같이 application.properties에 설정값들을 설정하고 그 외에 다른 기타 부수적인 설정들도 존재한다고 가정하겠습니다.
Spring Boot를 사용하여 이 어플리케이션 설정들을 관리할 수 있는 방법은 무엇일까요?
여기서 Property 값을 정의하고 Spring Boot 어플리케이션에서 활용할 수 있는 방법은 무엇일까요?

어플리케이션을 위해 어필리케이션 설정을 많이 생성하려고 하는 경우 Spring Boot 에서 권장되는 방식은 Configuration Properties를 사용하는 것입니다.

 

 

Configuration 클래스

package com.example.zzapdiz.configuration;

import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Setter
@Getter
@ConfigurationProperties(prefix = "currency-service")
@Component
public class CurrencyServiceConfiguration {

    private String url;
    private String username;
    private String key;

}

어플리케이션 설정들을 관리해주기 위한 Configuration 클래스 파일을 하나 만들어줍니다.
ConfigurationProperties 어노테이션을 붙여주고 prefix를 "currency-service"로 설정해주었습니다.
ConfigurationProperteis 어노테이션은 말 그대로 어플리케이션의 설정 프로퍼티 값을 찾아 지정해주는 어노테이션입니다.
prefix는 설정 프로퍼티의 가장 처음 기입한 값을 말합니다.
즉, 앞서 application.properties에 설정했던 currency-service.url, currency-service.username, currency-service.key 에서 currency-service가 그 값이 되는 것입니다.
이렇게 되면 currency-service 가 붙은 설정 프로퍼티를 지정하게 됩니다.
또한, ConfigurationProperties 어노테이션을 사용하기 위해서는 해당 클래스가 Component 어노테이션을 사용하여 bean 객체로 지정되어있어야 합니다.

불러온 currency-service 가 붙은 프로퍼티들 이름이 각각 url, username, key 이므로 필드 변수 값 또한 동일하게 설정해줍니다. (반드시 application.properties에서 설정한 프로퍼티 명과 동일해야 합니다.)
이 필드 변수들을 통해 확인할 것이기 때문에 Getter와 Setter 어노테이션도 붙여줍니다.

 

 

이제 application.properties에 존재하는 설정해준 프로퍼티들에 값을 넣어줍니다.
이로써 Configuration Properties를 지정 및 설정해주었습니다.
이 방식으로 다양하고 많은 어플리케이션의 설정 프로퍼티들을 관리하고 제어해줄 수 있습니다.

준비는 되었으니 확인을 해볼 차례입니다.

 

 

TestController

package com.example.zzapdiz.test.controller;

import com.example.zzapdiz.configuration.CurrencyServiceConfiguration;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

@Slf4j
@RequiredArgsConstructor
@RequestMapping("/zzapdiz")
@RestController
public class TestController {

    private final CurrencyServiceConfiguration configuration;

    @GetMapping("/test/currency-configuration")
    public CurrencyServiceConfiguration testConfiguration(){
        return configuration;
    }

}

확인해보기 위해 임의의 테스트 컨트롤러를 만들어주었습니다.
만든 Configuration 클래스를 RequiredArgsConstructor를 통해 의존성 주입하여 api를 호출하면 설정한 Configuration Properties 값을 확인할 수 있게됩니다.

 

 

서버 실행 후 해당 api를 호출했더니 설정했던 어플리케이션 설정 프로퍼티 값이 정상적으로 출력되는 것을 확인할 수 있습니다.

이렇게 해서 어플리케이션의 복잡한 설정을 지정하고 관리할 수 있습니다.
application.properties 에 설정한 설정 프로퍼티들을 ConfigurationProperties 어노테이션을 적용한 설정 클래스에서 한번에 호출받아서 사용하는 것입니다.

728x90
반응형
LIST