_본 글은 백기선님의 스프링부트 개념과 활용강좌를 수강하며 정리한 내용입니다._2

프로파일 설정을 통해 환경에 맞는 설정을 쉽고 빠르게 할 수 있다.

프로파일 등록 및 변경하기

다음 두 설정클래스가 있다고 가정하자.

@Configuration
@Profile("prod")
public class BaseConfiguration {

    @Bean
    public String  hello(){
        return "Hello prod";
    }
}

@Profile("test")
@Configuration
public class TestConfiguration {

    @Bean
    public String Hello(){
        return "Hello test";
    }
}

prod과 test라는 이름의 프로파일 클래스를 등록한 후, application.propeties에서 다음과 같이 설정한다.

spring.profiles.active = prod

활성화 중인 profile을 prod로 등록해 두었기 때문에 String hello를 @Autowired하여 출력해 보면 다음과 같은 결과가 나온다.

@Autowired
private String hello;
@Override
public void run(ApplicationArguments args) throws Exception {

    System.out.println("=========================");
    System.out.println(hello);
    System.out.println("=========================");
}

=========================
Hello prod
=========================

만약 jar파일로 빌드 후 커맨드 라인을 통해 spring.profiles.active를 test로 변경하면 어떻게 될까?

java -jar target/spring-......jar --spring.profiles.active=test

결과는

=========================
Hello test
=========================

처럼 나온다. 이는 커맨드라인 argument를 통해 설정한 프로퍼티값은 application.properties파일에 등록한 값을 overriding하기 때문이다.

프로파일 활용하기

이러한 프로파일 설정을 통해 매우 유연하게 다양한 설정을 변경할 수 있다.

스프링부트 외부설정_%EC%99%B8%EB%B6%80%EC%84%A4%EC%A0%95.md)에서 활용한 SamplePropeties.class를 다시 불러와 보자.

또한 application.properties에 다음과 같은 설정이 있었다고 가정하자.