Spring properties 분리하기

bong bong·2024년 8월 13일

스프링부트

목록 보기
1/1

☆ 시스템 프로퍼티란?

시스템 프로퍼티(System Properties) 란 JVM 시 구동할 때 자동으로 설정되는 시스템 속성값입니다. 시스템 프로퍼티는 키(Key) 와 값(Value)로 구성되어 있으며 운영체제에서 사용되는 파일 경로, 구분자, 운영체제의 종류 및 자바 프로그램을 실행시킨 사용자 아이디 JVM 버전등이 여기에 속합니다.

여기서 시스템 프로퍼티는 Enciroment 를 통해 확인 가능합니다.

그리고 Enviroment 는 Application Context 에 또 다른 기능입니다.

public interface ApplicationContext extends EnviromentCapable, ListableBeanFactory, 
HierarchicalBeanFactory, MessageSource, ApplicationEventPublisher, ResourcePatternResolver 

위의 코드는 ApplicationContext 의 인터페이스 선언부입니다.
여기서 집중해야할 부분은 EnviromentCapable 인터패이스를 부모 인터페이스로 두고 있는 것을 확인할 수 있는데 이는 바로 ApplicationContext 가 DI 기능 뿐만 아니라 Enviroment 까지 제공하고 있다는 것입니다

@Component
public class Runner implements AppicationRunner {
	
    @Autowired
    ApplicationContext ctx;
    
    @Override
    public void run(ApplicationArguments args) throws Exception {
      Enviroment env = ctx.getEnviroment(); // Enviroment 객체 
      System.out.println(Arrays.toString(enviroment.getActiveProfiles());
    }
    ```
해당 코드는 ApplicationContext 타입의 ctx 객체를 통해 Enviroment 를 가져오는 코드입니다.

결국 스프링 구동시 설정되는 값들은 시스템 프로퍼티 라고 하며 이는 스프링의 설정 값들을 추상화해놓은 Enviroment 로 읽어올 수 있습니다.

결론적으로

application.properties 를 사용하면, 환경별로 각기 다른 파일을 만들어야 합니다.
보통 환경은 사용자가 정의하기 나름이지만 dev(개발),test(테스트),local(로컬),prod(운영) 등이 사용됩니다.

환경별로 다른 파일을 만드는 경우 무조건 application-{사용할 환경 이름}.properties 형식으로 파일 이름을 지정해야합니다.

spring.profiles.active=test

특정 환경에 맞는 profiles 를 설정은 default 로 제공되는 application.properties 파일에 spring.profiles.active={활성화할 환경} 을 통해 할 수 있습니다.

profile
let's go invent tomorrow rather than worrying about what happened yesterday - Steven Paul Jobs

0개의 댓글