Profile?
- ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ถ configuration์ ๋ถ๋ฆฌํ๊ณ ์ถ์ ๋ ์ฌ์ฉ
- ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ถ configuration์ ํน์ ํ๊ฒฝ์์๋ง ๊ฐ๋ฅํ๊ฒ ํ๊ณ ์ถ์ ๋ ์ฌ์ฉ
- ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ฐ๋ผ ์ค์ ๊ฐ์ ๋ฌ๋ฅด๊ฒ ๋ก๋ฉํ ๋
@Profile
@Component, @Configuration, @ConfigurationProperties
์@Profile
์ ํจ๊ป ์ ์ธ
@Configuration
@Profile("production")
public class ProductionConfiguration {
// ...
}
- ์ดํ๋ฆฌ์ผ์ด์
์คํ์
spring.profiles.active
ํ๋กํผํฐ๋ก ํ๋กํ์ผ์ ์ง์ ํ๋ฉด ํด๋น ํ๋กํ์ผ์ด ์ ์ฉ๋ ๋น๋ง ๋ฑ๋ก๋จ
application-properties
spring.profiles.active=dev,hsqldb
Example
- application-properties์ ๋ค์๊ณผ ๊ฐ์ด ์ ์
spring.profiles.active=prod
@Profile
์ด๋ ธํ ์ด์ ๊ณผ ํจ๊ป@Configuration
๋ฑ๋ก
- ์ดํ๋ฆฌ์ผ์ด์ ์คํ์ activeํ prod์ ๋ฑ๋ก๋ hello ๋น์ด ์ถ๋ ฅ๋จ
@Profile๊ณผ @ActiveProfiles
- ์๋ก ๋ค๋ฅธ ํ๊ฒฝ์์ ์๋ก ๋ค๋ฅธ profile์ ํ์ฑํํ์ฌ ํ์ํ ๋น๋ง ๋ฑ๋กํ๋๋ก ํ๋ ์ด๋ ธํ ์ด์
@Profile
์ SpringBootApplication์ ์คํํ ๋ ์ฌ์ฉ@ActiveProfiles
์ ํ ์คํธ ํ๊ฒฝ์์ ์ฌ์ฉ
application.properties
- application-{profile}.properties ํ์์ผ๋ก ํ์ผ ์์ฑ
- ์ด๋
@ConfigurationProperties
๋ก ๊ฐ์ฃผ๋๊ณ ๋ก๋๋จ- *.properties , *.yml ํ์ผ์ ์๋ property๋ฅผ ์๋ฐ ํด๋์ค์ ๊ฐ์ ๊ฐ์ ธ์์(๋ฐ์ธ๋ฉ) ์ฌ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ์ด๋ ธํ ์ด์
- application-{profile}.properties์ application.properties ๋ณด๋ค ์ฐ์ ์์๊ฐ ๋๊ฒ๋จ
- ๋น๋ํ ๋ ๋ค์๊ณผ ๊ฐ์ ๋ช
๋ น์ด์ ํจ๊ป ํน์ ํ๊ฒฝ์ค์ ์ ์ ์ฉํ ์ ์์
--spring.profiles.active=production
- properties ํ์ผ์
spring.profiles.include
๋ฅผ ํตํด ์ถ๊ฐํ ํ๋กํ์ผ์ ์ค์ ํ ์ ์์
Example
application-properties
spring.profiles.active=dev
profile-common.name = default_name_mazzi
defaultonly.name = defualt_name
application-prod.properties
profile-common.name = test_name_mazzi
testonly.name = test_name
application-dev.properties
profile-common.name = dev_name_mazzi
devonly.name = dev_name
AppRunner
@Component
public class AppRunner implements ApplicationRunner {
@Autowired
Environment env;
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println("=====================================================");
System.out.println("spring.profiles.active : " + args.getOptionValues("spring.profiles.active"));
System.out.println("Enviroment's Active Profile : " + Arrays.toString(env.getActiveProfiles()));
System.out.println("defaultonly.name : " + env.getProperty("defaultonly.name"));
System.out.println("testonly.name : " + env.getProperty("testonly.name"));
System.out.println("devonly.name : " + env.getProperty("devonly.name"));
System.out.println("profile-common.name : " + env.getProperty("profile-common.name"));
System.out.println("=====================================================");
}
}
์คํ ๊ฒฐ๊ณผ
- profile-common.name๋ ๋ชจ๋ ํ๋กํผํฐ ํ์ผ์ด ๊ณตํต์ผ๋ก ๊ฐ์ง ํ๋กํผํฐ
- dev ํ๋กํ์ผ์ ํ์ฑํ
- ๊ณตํต ์์ฑ์ธ
profile-common.name
์ ์ฐ์ ์์๊ฐ ๋์ dev ํ๋กํ์ผ์ ๊ฒ์ผ๋ก ์ค๋ฒ๋ผ์ด๋ ๋จ