Skip to content
Go back

[Spring๐ŸŒฑ] application.properties ํ™œ์šฉ

Edit page

Spring Boot์—์„œ application.properties ํ”„๋กœํ•„ ๊ด€๋ฆฌ

Spring Boot์—์„œ๋Š” application.properties ํŒŒ์ผ์„ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ์„ค์ •์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ๊ณผ ๋ฐฐํฌ ํ™˜๊ฒฝ์—์„œ ํ•„์š”ํ•œ ์„ค์ •์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ด๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœํ•„(Profile)์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” application.properties์™€ ํ”„๋กœํ•„์„ ํ™œ์šฉํ•˜์—ฌ ํ™˜๊ฒฝ๋ณ„ ์„ค์ •์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์ด๋ฅผ ์ปดํฌ๋„ŒํŠธ์—์„œ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณธ๋‹ค.

ํ”„๋กœํ•„ ๋‚˜๋ˆ„๊ธฐ์˜ ํ•„์š”์„ฑ๐Ÿค”

๊ฐœ๋ฐœ ๋‹จ๊ณ„์™€ ๋ฐฐํฌ ๋‹จ๊ณ„์—์„œ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์„ค์ •์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋Š” ๋””๋ฒ„๊น…์„ ์œ„ํ•ด ๋กœ๊น… ๋ ˆ๋ฒจ์„ ๋†’๊ฒŒ ์„ค์ •ํ•˜๊ณ , ๋ฐฐํฌ ํ™˜๊ฒฝ์—์„œ๋Š” ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋กœ๊น… ๋ ˆ๋ฒจ์„ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„ค์ •์„ ํ•˜๋‚˜์˜ ํŒŒ์ผ์— ๋ชจ๋‘ ํฌํ•จ์‹œํ‚ค๋ฉด ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ค์›Œ์ง€๊ณ , ์‹ค์ˆ˜๋กœ ์ž˜๋ชป๋œ ์„ค์ •์„ ๋ฐฐํฌํ•  ์œ„ํ—˜์ด ์žˆ๋‹ค.

ํ”„๋กœํ•„์„ ๋‚˜๋ˆ„์–ด ๊ด€๋ฆฌํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์žฅ์ ์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค:

ํ”„๋กœํ•„ ์„ค์ • ๋ฐฉ๋ฒ• ๐Ÿ“‚

Spring Boot์—์„œ๋Š” application.properties ๋˜๋Š” application.yml ํŒŒ์ผ์„ ๊ธฐ๋ณธ ์„ค์ • ํŒŒ์ผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ์—ฌ๊ธฐ์— ๊ฐ ํ”„๋กœํ•„์— ๋”ฐ๋ฅธ ์„ค์ • ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํ™˜๊ฒฝ๋ณ„ ์„ค์ •์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

์„ค์ • ํŒŒ์ผ ์˜ˆ์ œ ๐Ÿ“„

๊ธฐ๋ณธ ์„ค์ • ํŒŒ์ผ: application.properties

spring.application.name=learn-spring-boot
logging.level.org.springframework=debug

spring.profiles.active=dev

currency-service.url=https://qyinm.github.io
currency-service.username=qyinm
currency-service.key=defaultKey

๊ฐœ๋ฐœ ํ”„๋กœํ•„ ์„ค์ • ํŒŒ์ผ: application-dev.properties

spring.application.name=learn-spring-boot-dev
logging.level.org.springframework=trace

currency-service.url=https://dev.qyinm.github.io
currency-service.username=devUser
currency-service.key=devKey

๋ฐฐํฌ ํ”„๋กœํ•„ ์„ค์ • ํŒŒ์ผ: application-prod.properties

spring.application.name=learn-spring-boot-prod
logging.level.org.springframework=error

currency-service.url=https://prod.qyinm.github.io
currency-service.username=prodUser
currency-service.key=prodKey

์„ค๋ช… ๐Ÿ“

ํ”„๋กœํ•„ ํ™œ์„ฑํ™” ๋ฐฉ๋ฒ• ๐Ÿ”ง

Spring Boot์—์„œ๋Š” spring.profiles.active ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ™œ์„ฑํ™”ํ•  ํ”„๋กœํ•„์„ ์ง€์ •ํ•œ๋‹ค. ์ด ์†์„ฑ์€ ๊ธฐ๋ณธ ์„ค์ • ํŒŒ์ผ์— ์ •์˜ํ•˜๊ฑฐ๋‚˜, JVM ์˜ต์…˜์„ ํ†ตํ•ด ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฐฉ๋ฒ• 1: ๊ธฐ๋ณธ ์„ค์ • ํŒŒ์ผ์—์„œ ํ™œ์„ฑํ™”

spring.profiles.active=dev

๋ฐฉ๋ฒ• 2: JVM ์˜ต์…˜์„ ํ†ตํ•ด ํ™œ์„ฑํ™”

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•  ๋•Œ JVM ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํ”„๋กœํ•„์„ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.

java -jar -Dspring.profiles.active=prod learn-spring-boot.jar

๋ฐฉ๋ฒ• 3: ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ํ™œ์„ฑํ™”

ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜์—ฌ ํ”„๋กœํ•„์„ ํ™œ์„ฑํ™”ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

export SPRING_PROFILES_ACTIVE=prod

Component์—์„œ ๊ฐ’ ๊ฐ€์ ธ์™€ ์“ฐ๊ธฐ ๐Ÿ“

Spring Boot์—์„œ๋Š” @ConfigurationProperties ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœํผํ‹ฐ ๊ฐ’์„ ์ปดํฌ๋„ŒํŠธ์— ์ฃผ์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ™˜๊ฒฝ๋ณ„๋กœ ๋‹ค๋ฅธ ์„ค์ • ๊ฐ’์„ ์†์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฝ”๋“œ ์˜ˆ์ œ ๐Ÿ“„

CurrencyController.java

package com.hippoo.learnspringboot;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class CurrencyController {

    @Autowired
    private CurrencyServiceConfiguration configuration;

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

CurrencyServiceConfiguration.java

package com.hippoo.learnspringboot;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

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

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

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getKey() {
        return key;
    }

    public void setKey(String key) {
        this.key = key;
    }
}

์„ค์ • ํŒŒ์ผ ์˜ˆ์ œ ๐Ÿ“„

application.properties

spring.application.name=learn-spring-boot
logging.level.org.springframework=debug

spring.profiles.active=dev

currency-service.url=https://qyinm.github.io
currency-service.username=qyinm
currency-service.key=defaultKey

application-dev.properties

spring.application.name=learn-spring-boot-dev
logging.level.org.springframework=trace

currency-service.url=https://dev.qyinm.github.io
currency-service.username=devUser
currency-service.key=devKey

์ด๋ ‡๊ฒŒ ์„ค์ •ํ•˜๋ฉด, ํ™œ์„ฑํ™”๋œ ํ”„๋กœํ•„์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์„ค์ • ๊ฐ’์ด CurrencyServiceConfiguration ์ปดํฌ๋„ŒํŠธ์— ์ฃผ์ž…๋œ๋‹ค.

ํ”„๋กœํ•„ ์‚ฌ์šฉ ์‹œ ์ฃผ์˜์‚ฌํ•ญ โš ๏ธ

ํ”„๋กœํ•„์„ ์‚ฌ์šฉํ•  ๋•Œ ๋‹ค์Œ ์‚ฌํ•ญ์„ ์œ ์˜ํ•ด์•ผ ํ•œ๋‹ค:

๊ฒฐ๋ก  ๐ŸŽฏ

Spring Boot์˜ ํ”„๋กœํ•„ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜๋ฉด ๊ฐœ๋ฐœ, ํ…Œ์ŠคํŠธ, ๋ฐฐํฌ ๋“ฑ ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์—์„œ ํ•„์š”ํ•œ ์„ค์ •์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ํ”„๋กœํ•„์„ ๋‚˜๋ˆ„์–ด ์„ค์ • ํŒŒ์ผ์„ ๋ถ„๋ฆฌํ•˜๋ฉด ํ”„๋กœ์ ํŠธ์˜ ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ํ–ฅ์ƒ๋˜๊ณ , ํ™˜๊ฒฝ๋ณ„๋กœ ์ตœ์ ํ™”๋œ ์„ค์ •์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ, @ConfigurationProperties์™€ ๊ฐ™์€ ์–ด๋…ธํ…Œ์ด์…˜์„ ํ™œ์šฉํ•˜๋ฉด ์ฝ”๋“œ์—์„œ ์„ค์ • ๊ฐ’์„ ์‰ฝ๊ฒŒ ์ฃผ์ž…๋ฐ›์•„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ”„๋กœ์ ํŠธ์˜ ๋ณต์žก์„ฑ์ด ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ ํ”„๋กœํ•„์„ ์ ์ ˆํžˆ ํ™œ์šฉํ•˜์—ฌ ํ™˜๊ฒฝ๋ณ„ ์„ค์ •์„ ์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•ด๋ณด์ž. ์ด๋ฅผ ํ†ตํ•ด ๋”์šฑ ๊ฒฌ๊ณ ํ•˜๊ณ  ์œ ์—ฐํ•œ Spring Boot ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

์ฐธ๊ณ ์ž๋ฃŒ ๐Ÿ“š


Edit page
Share this post on:

Previous Post
[Spring๐ŸŒฑ] ๋กœ๊น…(Logging) ์™„๋ฒฝ ๊ฐ€์ด๋“œ ๐Ÿ“
Next Post
[Spring๐ŸŒฑ] XML Configuration ๐Ÿ“„