@Profile 어노테이션

2022. 7. 6. 21:08Spring 기초

1) 로컬에서 애플리케이션을 실행할 때
2) 테스트를 실행할 때
3) 실제 운영을 위해 배포할 때

위의 세가지 경우에서 각각 다른 설정을 사용하고 싶고, 해당 설정에 맞는 Bean을 사용하고 싶은 경우
@Profile 어노테이션을 사용하면 좋다.

스프링은 프로필(@Profile)을 통해 런타임 환경을 설정할 수 있는 기능을 제공한다. 파일을 여러 개로 분리하는 대신에 빈 구성이 달라지는 내용을 프로필로 정의해서 만들어두고, 실행 시점(런타임)에 어떤 프로필의 빈 설정을 사용할 지 지정할 수 있는 것이다.

먼저, application.properties 설정파일을 한번 살펴보자.

하나는 java 패키지의 설정파일로, 1번 경우에 해당한다.
아래는 test 패키지 하위에 있는 application.properties 설정이다. 테스트 코드를 실행할 때는 test 패키지에 있는 application.properties의 설정이 우선시되므로 프로필은 test가 된다.

현재 프로필 상태는 애플리케이션을 실행할 때 콘솔에서 쉽게 확인할 수 있다. local로 지정해 두었으며 application.properties에서 프로필을 설정하지 않는 경우에는 Default가 디폴트다!

이제 프로필이 뭔지 대충 알았으니 사용하는 예시를 살펴보자.

	@Bean
	@Profile("local")
	public TestDataInit testDataInit(ItemRepository itemRepository) {
		return new TestDataInit(itemRepository);
	}

위의 메소드는 @Configuration 설정 파일 내에서 수동으로 빈을 등록하는 코드다. 
현재 프로필을 local로 설정했으므로 @Profile("local")이 동작하여 testDataInit이 스프링 빈으로 등록된다. 
만약 application.properties에서 프로필을 local이 아니라 다른 것으로 설정한다면 위 메소드는 실행되지 않아 testDataInit이 빈으로 등록되지 않을 것이다.