ํ๋กํผํฐ
- ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก ์ ์ํ ์ ์๋ ์ค์ ๊ฐ
- Environment์ ์ญํ ์ ํ๋กํผํฐ ์์ค ์ค์ ๋ฐ ํ๋กํผํฐ ๊ฐ ๊ฐ์ ธ์ค๊ธฐ
1) ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก ์ ์ํ ์ ์๋ ์ค์ ๊ฐ
1-1. VM options ์ค์
VM options : -Dapp.name=spring5 ์ค์
@Component
public class AppRunner implements ApplicationRunner {
@Autowired
ApplicationContext ctx;
@Autowired
BookRepository bookRepository;
@Override
public void run(ApplicationArguments args) throws Exception {
Environment environment = ctx.getEnvironment();
System.out.println(environment.getProperty("app.name")); //์ด ๋ถ๋ถ!
}
}
์ถ๋ ฅ ๊ฒฐ๊ณผ๋ spring5๊ฐ ๋๋ค.
1-2. properties ํ์ผ ์์ฑํ ๋ค์ ํ๋กํผํฐ ์ค์
java/main/resource/ ์ app.properties๋ผ๋ ํ์ผ์ ์์ฑํด ์ค์ ํด์ค๋ค.
2) Environment์ ์ญํ ์ ํ๋กํผํฐ ์์ค ์ค์ ๋ฐ ํ๋กํผํฐ ๊ฐ ๊ฐ์ ธ์ค๊ธฐ
@Component
public class AppRunner implements ApplicationRunner {
@Autowired
ApplicationContext ctx;
@Autowired
BookRepository bookRepository;
@Override
public void run(ApplicationArguments args) throws Exception {
Environment environment = ctx.getEnvironment();
System.out.println(environment.getProperty("app.name"));
}
}
@SpringBootApplication
@PropertySource("classpath:/app.properties")
public class Demospring51Application {
public static void main(String[] args) {
SpringApplication.run(Demospring51Application.class, args);
}
}
properties ํ์ผ๋ก ์ค์ ํ๋ ๊ฒฝ์ฐ์๋ ์ด๋ ๊ฒ @Configuration์ ํ์ฅํ๋ ์ ๋ ธํ ์ด์ ๋ฐ์ ์ฝ๋๋ฅผ ์ถ๊ฐํด์ค๋ค.
ํ๋กํผํฐ์๋ ์ฐ์ ์์๊ฐ ์๋ค.
- StandardServeltEnvironment์ ์ฐ์ ์์
- ServeltContext ๋งค๊ฐ๋ณ์
- JNDI (java:comp/env/)
- JVM ์์คํ ํ๋กํผํฐ (-Dkey="value")
- JVM ์์คํ ํ๊ฒฝ ๋ณ์ (์ด์ ์ฒด์ ํ๊ฒฝ ๋ณ์)
(test) VM options ์ค์ ๊ณผ app.properties์ ํ๋กํผํฐ ์ค์ ์ ๊ฐ๊ฒ ํ๋ค๋ฉด ๋๊ฐ ๋ ์ฐ์ ์์๊ฐ ๋์๊น?
VM options : -Dapp.name=spring5 / app.properties : app.name=spring
๊ฒฐ๊ณผ๋, VM options ๊ฐ ๋ ๋๋ค. spring5๊ฐ ์ถ๋ ฅ์ด ๋๋ค.
@PropertySource
- Environment๋ฅผ ํตํด ํ๋กํผํฐ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ
app.name=spring
java/resources ์ app.properties ๋ผ๊ณ File ํ์์ผ๋ก ํ๋ ๋ง๋ค์ด์ค๋ค.
package com.example.demospring51;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.PropertySource;
@SpringBootApplication
@PropertySource("classpath:/app.properties") // **** ํ๋กํผํฐ ์ถ๊ฐ ****
public class Demospring51Application {
public static void main(String[] args) {
SpringApplication.run(Demospring51Application.class, args);
}
}
๊ทธ๋ฐ ๋ค์ @Configuration์ ํ์ฅํ๋ ์ ๋ ธํ ์ด์ ์ด ๋ถ์ ํด๋์ค์ @PropertySource("classpath:/app.properties")๋ฅผ ์ถ๊ฐํด์ค๋ค.
์คํ๋ง ๋ถํธ์ ์ธ๋ถ ์ค์ ์ฐธ๊ณ
- ๊ธฐ๋ณธ ํ๋กํผํฐ ์์ค ์ง์ (application.properties)
- ํ๋กํ์ผ๊น์ง ๊ณ ๋ คํ ๊ณ์ธตํ ํ๋กํผํฐ ์ฐ์ ์์ ์ ๊ณต