- ๊ด๋ จ ๊ธ
- 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
์ธํ๋ฐ - ๋ฐฑ๊ธฐ์ ๋์ ์คํ๋ง ํ๋ ์์ํฌ ํต์ฌ ๊ธฐ์
'Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring] ApplicationEventPublisher๋ฅผ ์ด์ฉํ ์ด๋ฒคํธ ํ๋ก๊ทธ๋๋ฐ (0) | 2020.03.05 |
---|---|
[Spring] Spring ์ดํ๋ฆฌ์ผ์ด์ ๋ฉ์์ง ๋ค๊ตญ์ด ๋ฐ ์ฌ๋ก๋ฉ ์ฒ๋ฆฌ (0) | 2020.03.04 |
[Spring] EnvironmentCapable - Profile ์ฌ์ฉํ๊ธฐ (0) | 2020.03.04 |
[Spring] ๋น์ Scope - ์ฑ๊ธํค๊ณผ ํ๋กํ ํ์ (0) | 2020.03.03 |
[Spring] Component Scan๊ณผ Function์ ์ฌ์ฉํ ๋น ๋ฑ๋ก ๋ฐฉ๋ฒ (1) | 2020.03.02 |
๋๊ธ