Backend/spring

ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๊ด€๋ฆฌ (@Value, @ConfigurationProperties)

dddzr 2025. 2. 26. 21:14

๐Ÿ” 1. ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ž€?

YAML ๋ณ€์ˆ˜, ํ”„๋กœํผํ‹ฐ ๋ณ€์ˆ˜, ์„ค์ • ๋ณ€์ˆ˜ ๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค.

ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ ์‹œ ํ•„์š”ํ•œ ์„ค์ • ๊ฐ’์„ ์˜๋ฏธํ•œ๋‹ค.

์ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ ์ˆ˜์ • ์—†์ด ํ™˜๊ฒฝ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ณ , ์œ ์ง€๋ณด์ˆ˜๋„ ์‰ฌ์›Œ์ง„๋‹ค!

 

๐Ÿ“Œ 2. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •ํ•˜๊ธฐ

Spring Boot์—์„œ๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ application.yml ๋˜๋Š” application.properties์— ์ €์žฅํ•œ๋‹ค.

โžก๏ธ ์ด ๊ฐ’๋“ค์€ @Value๋‚˜ @ConfigurationProperties๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ฝ”๋“œ์—์„œ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค!

 

๐Ÿ“– YAML ์‚ฌ์šฉ (application.yml)

atchfile:
  upload:
    path: /upload/files
 

๐Ÿ“– Properties ์‚ฌ์šฉ (application.properties)

atchfile.upload.path=/upload/files

 

๐Ÿ“Œ 3. @Value

@Value ์• ๋„ˆํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๊ฐ’์„ ์ฃผ์ž…๋ฐ›๋Š”๋‹ค.

@Value("${atchfile.upload.path}")
private String atchfileUploadPath;

 

โš ๏ธ ํ•˜์ง€๋งŒ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ๋งŽ์•„์ง€๋ฉด @Value๋กœ ํ•˜๋‚˜์”ฉ ์ฃผ์ž…๋ฐ›๋Š” ๋ฐฉ์‹์€ ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ต๋‹ค!

 

๐Ÿ“Œ 4. @ConfigurationProperties

ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ๋งŽ์•„์ง€๋ฉด, @Value๋ณด๋‹ค๋Š” ์ „์šฉ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด์„œ ํ•œ ๋ฒˆ์— ๊ด€๋ฆฌํ•˜๋Š” ๊ฒŒ ์ข‹์Œ!

 

1๏ธโƒฃ ์„ค์ • ํด๋ž˜์Šค ๋งŒ๋“ค๊ธฐ

@Configuration
@ConfigurationProperties(prefix = "atchfile.upload")
@Getter
@Setter
public class AtchFileConfig {
    private String path;
}

 

2๏ธโƒฃ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๊ฐ’ ์ž๋™ ์ฃผ์ž…

@Service
public class FileService {
    private final AtchFileConfig atchFileConfig;

    public FileService(AtchFileConfig atchFileConfig) {
        this.atchFileConfig = atchFileConfig;
    }

    public void printPath() {
        System.out.println("Upload Path: " + atchFileConfig.getPath());
    }
}

 

โžก๏ธ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด atchFileConfig.getPath()๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๊ฐ’์„ ์‰ฝ๊ฒŒ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค!

 

๐Ÿ”ฅ @Value vs @ConfigurationProperties

๋น„๊ต ํ•ญ๋ชฉ @Value @ConfigurationProperties
์‚ฌ์šฉ ๋ฐฉ์‹ ๊ฐœ๋ณ„ ๋ณ€์ˆ˜ ์ฃผ์ž… ์„ค์ • ํด๋ž˜์Šค๋กœ ๊ด€๋ฆฌ
ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๊ฐœ์ˆ˜ ์ ์„ ๋•Œ ์ ํ•ฉ ๋งŽ์„ ๋•Œ ์ ํ•ฉ
์œ ์ง€๋ณด์ˆ˜์„ฑ ๊ด€๋ฆฌ ์–ด๋ ค์›€ ์œ ์ง€๋ณด์ˆ˜ ํŽธ๋ฆฌ
์œ ์—ฐ์„ฑ ํƒ€์ž… ๋ณ€ํ™˜ ๋ถˆํŽธ ์ž๋™ ๋ณ€ํ™˜ ์ง€์›

 

๐Ÿš€ ๊ฒฐ๋ก 

  • ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์ ์„ ๋•Œ → @Value ์‚ฌ์šฉ
  • ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ๋งŽ์„ ๋•Œ → @ConfigurationProperties ์‚ฌ์šฉ (โœ… ์ถ”์ฒœ!)