๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Spring

[Spring] EnvironmentCapable - Property ์‚ฌ์šฉํ•˜๊ธฐ

by Leica 2020. 3. 4.
๋ฐ˜์‘ํ˜•
  • ๊ด€๋ จ ๊ธ€

- JAVA ์›น ํ”„๋กœ์ ํŠธ์—์„œ Properties ํŒŒ์ผ ํ™œ์šฉํ•˜๊ธฐ

- [Spring] EnvironmentCapable - Profile ์‚ฌ์šฉํ•˜๊ธฐ


[Spring] EnvironmentCapable - Property ์‚ฌ์šฉํ•˜๊ธฐ

ApplicationContext๋Š” EnvironmentCapable์„ ์ƒ์†๋ฐ›์œผ๋ฉฐ, EnvironmentCapable์ด ์ œ๊ณตํ•˜๋Š” ์ฃผ์š” ๊ธฐ๋Šฅ์—๋Š” profile๊ณผ property๊ฐ€ ์žˆ๋‹ค.

๋ณธ ํฌ์ŠคํŒ…์—์„œ๋Š” ๊ทธ ์ค‘ property์— ๋Œ€ํ•ด ์‚ดํŽด๋ณธ๋‹ค.

 

1. Property ๊ธฐ๋Šฅ

์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ key, value ์Œ์œผ๋กœ ์ œ๊ณต๋˜๋Š” ํ”„๋กœํผํ‹ฐ์— ๊ฐ„ํŽธํ•˜๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.

Spring์€ ํ”„๋กœํผํ‹ฐ์— '๊ณ„์ธตํ˜•'์œผ๋กœ ์ ‘๊ทผํ•˜๋Š”๋ฐ ๊ณ„์ธตํ˜•์œผ๋กœ ์ ‘๊ทผํ•œ๋‹ค๋Š” ๋ง์€ ํ”„๋กœํผํ‹ฐ์— ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค.

ํ”„๋กœํผํ‹ฐ๋Š” ๋‹ค์–‘ํ•œ ํ˜•ํƒœ๋กœ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ œ๊ณต๋  ์ˆ˜ ์žˆ๋Š”๋ฐ key๊ฐ€ ๋™์ผํ•˜๋ฉด ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋” ๋†’์€ ํ”„๋กœํผํ‹ฐ์˜ value๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.

 

2. Property ์ ‘๊ทผ ๋ฐฉ๋ฒ•

ํ”„๋กœํผํ‹ฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ฃผ์–ด์ง€๋“  Environment ๊ฐ์ฒด๋กœ ๊ฐ€์ ธ์˜จ๋‹ค๋Š” ์ ‘๊ทผ ๋ฐฉ๋ฒ•์€ ๋™์ผํ•˜๋‹ค.

 

1) JVM ์‹œ์Šคํ…œ ํ”„๋กœํผํ‹ฐ

JVM ์‹œ์Šคํ…œ ํ”„๋กœํผํ‹ฐ๋Š” -D ์˜ต์…˜์„ ์‚ฌ์šฉํ•ด์„œ ์ฃผ์–ด์ง€๋Š” VM ํ”„๋กœํผํ‹ฐ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

 

IDE์˜ ์‹คํ–‰ ํ™˜๊ฒฝ ์„ค์ •์—์„œ -D ์˜ต์…˜์„ ์‚ฌ์šฉํ•ด์„œ ํ”„๋กœํผํ‹ฐ๋ฅผ ์„ค์ •ํ•ด๋ณด์ž.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.context.ApplicationContext;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
 
@Component
public class AppRunner implements ApplicationRunner {
 
    @Autowired
    ApplicationContext ctx;
 
    @Override
    public void run(ApplicationArguments args) throws Exception {
        Environment environment = ctx.getEnvironment();
        System.out.println(environment.getProperty("app.name"));
    }
}
cs

์„ค์ •๋œ ํ”„๋กœํผํ‹ฐ๋Š” Environment ๊ฐ์ฒด๋กœ๋ถ€ํ„ฐ getProperty() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ key๊ฐ’์„ ๋„˜๊ฒจ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

Environment ๊ฐ์ฒด๋Š” ApplicationContext์˜ getEnvironment()๋กœ ์–ป๋Š”๋‹ค.

 

์‹คํ–‰ ๊ฒฐ๊ณผ

 

2) ํ”„๋กœํผํ‹ฐ ํŒŒ์ผ(.properties)

ํ”„๋กœ์ ํŠธ classpath ๋‚ด์— app.properties ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ํ”„๋กœํผํ‹ฐ๋ฅผ ์„ค์ •ํ•œ๋‹ค.

 

1
2
3
4
5
6
7
8
9
10
11
12
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.PropertySource;
 
@SpringBootApplication
@PropertySource("classpath:/app.properties")
public class Demospring52Application {
 
    public static void main(String[] args) {
        SpringApplication.run(Demospring52Application.class, args);
    }
}
cs

๊ทธ๋ฆฌ๊ณ  @Configuration์ด ์žˆ๋Š” ํด๋ž˜์Šค์— @PropertySource ์• ๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•ด์„œ ํ”„๋กœํผํ‹ฐ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•œ๋‹ค.

๊บผ๋‚ด๋Š” ๋ฐฉ๋ฒ•์€ JVM ํ”„๋กœํผํ‹ฐ์™€ ๋™์ผํ•˜๋‹ค.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.context.ApplicationContext;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
 
@Component
public class AppRunner implements ApplicationRunner {
 
    @Autowired
    ApplicationContext ctx;
 
    @Override
    public void run(ApplicationArguments args) throws Exception {
        Environment environment = ctx.getEnvironment();
        System.out.println(environment.getProperty("app.about"));
    }
}
cs

 

์‹คํ–‰ ๊ฒฐ๊ณผ

 

3. ์šฐ์„ ์ˆœ์œ„

JVM ์‹œ์Šคํ…œ ํ”„๋กœํผํ‹ฐ์™€ ํ”„๋กœํผํ‹ฐ ํŒŒ์ผ ์ค‘ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ๊ฒƒ์€ ๋ฌด์—‡์ผ๊นŒ?

๋˜‘๊ฐ™์€ key๋ฅผ ์„ค์ •ํ•ด์„œ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•ด๋ณด์ž.

 

JVM ํ”„๋กœํผํ‹ฐ์—๋Š” app.name=spring5demo๋ฅผ, ํ”„๋กœํผํ‹ฐ ํŒŒ์ผ์—๋Š” app.name=spring5core๋ฅผ ๊ฐ’์œผ๋กœ ์„ค์ •ํ–ˆ๋‹ค.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.context.ApplicationContext;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
 
@Component
public class AppRunner implements ApplicationRunner {
 
    @Autowired
    ApplicationContext ctx;
 
    @Override
    public void run(ApplicationArguments args) throws Exception {
        Environment environment = ctx.getEnvironment();
        System.out.println(environment.getProperty("app.name"));
    }
}
cs

 

์‹คํ–‰ ๊ฒฐ๊ณผ

๋‘˜ ์ค‘ JVM ํ”„๋กœํผํ‹ฐ์˜ ๊ฐ’์ด ์ถœ๋ ฅ๋˜์—ˆ๋‹ค.

์ฆ‰ ํ”„๋กœํผํ‹ฐ ํŒŒ์ผ๋ณด๋‹ค JVM ํ”„๋กœํผํ‹ฐ์˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋” ๋†’๋‹ค.

 

4. [์ฐธ๊ณ ] Spring Boot์—์„œ ํ”„๋กœํผํ‹ฐ ์ ‘๊ทผํ•˜๊ธฐ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.context.ApplicationContext;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
 
@Component
public class AppRunner implements ApplicationRunner {
 
    @Autowired
    ApplicationContext ctx;
 
    @Value("${app.name}")
    String appName;
 
    @Override
    public void run(ApplicationArguments args) throws Exception {
        Environment environment = ctx.getEnvironment();
        System.out.println(environment.getProperty("app.name"));
        System.out.println(appName);
    }
}
cs

Spring boot์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด @Value ์• ๋…ธํ…Œ์ด์…˜์œผ๋กœ ํ”„๋กœํผํ‹ฐ ๊ฐ’์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.


  • ๊ด€๋ จ ๊ธ€

- JAVA ์›น ํ”„๋กœ์ ํŠธ์—์„œ Properties ํŒŒ์ผ ํ™œ์šฉํ•˜๊ธฐ

- [Spring] EnvironmentCapable - Profile ์‚ฌ์šฉํ•˜๊ธฐ

 

References

์ธํ”„๋Ÿฐ - ๋ฐฑ๊ธฐ์„ ๋‹˜์˜ ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ ํ•ต์‹ฌ ๊ธฐ์ˆ 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€