학습(구)/Spring 요약

프로필과 프로퍼티 파일

잉아당 2020. 11. 30. 20:55
728x90

프로필

개발 환경과 실제 서비스 환경을 구분하기 위해 환경 단위를 프로필로 구분하여 사용합니다.

프로필은 설정 클래스 작성 시 @Profile 어노테이션을 사용해서 지정할 수 있습니다.

특정 프로필을 선택하기 위해서는 컨테이너를 초기화 하기전 getEnvironment()메소드를 통해 Environment를 가져오고 setActiveProfiles를 이용해 사용할 프로필을 선택할 수 있습니다. 반드시 설정 정보를 전달하기 전 프로필을 지정해야 합니다. 만약 설정 정보가 먼저 전달이 되면 익셉션이 발생하게 됩니다. 프로필 지정시 두개의 프로필을 지정할 수도 있습니다.

중첩 클래스를 이용하여 한 클래스 안에 여러 개의 설정 클래스를 작성할 수 있는데 바깥 클래스와 내부 클래스는 각 클래스별로 @Configuration을 사용하고 중첩 클래스에는 @Profile어노테이션을 사용하여 프로필을 지정할 수 있습니다. 이때 내부 설정 클래스들은 static으로 작성이 되야 합니다. 

한 설정 클래스는 두 개 이상의 프로필 이름을 가질 수 있으며 "!"를 사용해 해당 프로필이 아닌 경우에 모두 적용하게 할 수도 있습니다. 

Dispatcher 생성시 <init-parm>으로 프로필을 설정할 수도 있습니다.

 

프로퍼티 파일

프로퍼티 파일를 이용해 환경 설정을 할 수 있습니다. 

PropertySourcesPlaceHolderConfigurer 객체를 Bean객체로 설정합니다. 이때 static으로 설정해야 합니다. setLocationis()메소드로 프로퍼티 파일 목록을 인자로 받는데 Resource타입을 이용해 파일 경로를 전달합니다. Resource 타입은 자원을 표현할 때 사용합니다. 이 파일 목록을 토대로 설정 클래스에서 @Value어노테이션을 사용할 수 있습니다. ${구분자}로 지정할 수 있으며 PlaceHolder를 이용해 해당 값을 위치시켜 그값을 어노테이션을 지정한 필드를 통해 사용할 수 있습니다. 

설정 클래스 뿐만 아니라 Bean으로 사용할 클래스에도 @Value를 사용하여 프로퍼티 값을 사용할 수 있으며 set메소드에도 사용해 매개변수에 프로퍼티 값을 이용할 수 있습니다.