본 포스팅은 MessageSource 이후 Properties 파일을 이용하여 설정을 하는 내용입니다.

GIT 주소 : https://github.com/lahuman/SpringBoot.Sample


Properties 파일의 용도


보통은 서비스에 필요한 상수 저장용도로 많이 이용합니다. 

2000년 초반엔는 SQL도 properties에 저장하여 사용한적이 있습니다.

다만, 서버 기동시 최초 1번만 로딩 되도록 설계하기 때문에 이점을 유의 하시면 됩니다.

물론 재로딩하는 기능을 만들 수 있습니다.


준비 사항

  • JDK 1.6 이상
  • Gradle 1.11 이상
  • IntelliJ


PropertySource 사용하기


1. properties 파일 만들기

properties 파일을 생성한다.



파일 명은 DEV.db.properties, PRODUCT.db.properties 로 개발 시와 배포시 다른 설정이 필요하기 때문에 2종류를 작성한다.

//DEV.db.properties,
db.driver=DEV
db.url=url
db.user=user
db.password=password
default.locale=ko_KR


//PRODUCT.db.properties,
db.driver=PRODUCT
db.url=url
db.user=user
db.password=password
default.locale=en_US


2. Application 설정

Application 에서 로드 하려는 Properties파일들을 다음과 같이 annotation으로 선언 한다.


@EnableWebMvc
@Configuration
@EnableAutoConfiguration
@ComponentScan
//하나의 properties를 사용할 경우
//@PropertySource("classpath:${APP_ENV:default}.properties")
//여러 properties를 사용할 경우
@PropertySources({
    @PropertySource("classpath:${APP_ENV:DEV}.db.properties"),
    @PropertySource("classpath:${APP_ENV:DEV}.setting.properties")
        //물리 위치에서 파일을 찾을 경우
//    @PropertySource("file:/data/${APP_ENV:DEV}.setting.properties")
})
public class Application  extends WebMvcConfigurerAdapter {
    static final Logger log = LoggerFactory.getLogger(Application.class);

    @Autowired
    private Environment env;

TIP : ${APP_ENV:DEV}의 의미는 환경변수의 APP_ENV 값을 찾아 대입 하라는 의미 이며, 환경변수의 값이 없을 경우 DEV 로 진행하라는 의미 이다.


사용은 다음과 같이 한다.


        localeResolver.setDefaultLocale(new Locale(env.getProperty("default.locale")));

3. 테스트

Application.main() 을 기동 하고, /test.do를 호출 하면 다음과 같은 화면을 볼수 있다.




4. 환경변수 설정 & 테스트

이후 환경 변수 APP_ENV를 PRODUCT로 설정 하고 테스트를 진행한다.


환경 변수 설


WIN 7 기준 : 

내 컴퓨터 > 마우스 오른쪽 클릭 > 속성 > 고급 시스템 설정 > 환경 변수 > 사용자 변수 > 새로 만들기 

변수명 과 값을 설정 하면 된다.




LINUX 기준 :

export APP_ENV=PRODUCT


변수 확인 방법 

WIN 7 기준 :

CMD 창에서 echo %APP_ENV%


LINUX 기준 :
echo $APP_ENV


결과 화면 : 



TIP : 환경 변수를 설정한 이후 반영된 값을 보기 위해서는 IDE(eclipse or IntelliJ)를 재기동 하여야 한다.


참고 자료 : 

http://fahdshariff.blogspot.kr/2012/09/spring-3-javaconfig-loading-properties.html#comment-form

http://www.jayway.com/2014/02/16/spring-propertysource/

http://www.mkyong.com/spring-mvc/spring-mvc-internationalization-example/

Posted by lahuman

댓글을 달아 주세요