ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring Framework에서 외부 property 사용하기
    초급 개발자 이야기/노하우 쌓아가기 2009. 6. 8. 12:48

    이 카테고리에는 더 이상 글이 올라오지 않습니다.


    별도의 개발 블로그를 열어 개발에 관련된 이야기는 블로그를 분리하였습니다.

    만약 더 많은 개발 이야기가 보고 싶으시다면 아래 링크로 이동해 주세요.


    link : Digital Blue Eye's dev-ops

    #######################################################################################################



    Project 진행 중 외부property를 참조해야 할 필요성이 있습니다.

    DB connection에 관련된 정보 혹은 솔루션 내부에서 각 site에 따라 변경되는 값을 처리해야 할 경우 *.property 류의 text 형식의 파일을 생성하여 참조하게 됩니다. 기존에는 class path에 등록된 경로의 property를 읽어와 참조하는형식을 사용했었습니다.

     

    Spring framework에서는 간단히 applicationContext를 정의함으로써 외부 property의 정보를 참조할 수 있습니다.

     

    본 문서는 Spring framework에서 외부 property를 참조하는 방법을 기술하고 있습니다. 이미 해당 기술의 사용법을 아시는 분은 필요 없으시겠지만 해당 기술을 처음 이용하여 새로운 로직을 구현하시려는분께 도움이 되고자 작성하였습니다.



    (그림 1) 요소 관계


    제대로 그렸는지 모르겠지만 위의 (그림 1)은 요소 관계를 보여줍니다.

    applicationContext에서는 외부 property 파일(config.property)을 참조하여 context를 등록하고, WAS 기동 시 정의된 class property의 값을 set합니다.

    Business Logic에서는 class를 호출하여 값을 사용하면 됩니다.



    (그림2) config.property


    (그림 2) config.property의 내용을 보여줍니다.

    “property_name=value” 형식으로 선언되어야 하며, property_name이 이후 applicationContext에서 외부 property의 정보를 참조하는 이름 역할을 합니다.

     

    (그림 3) applicationContext.xml


    applicationContext context를 등록합니다.

    상단 General Definitions가 참조될 외부 property 파일을 지정하는 부분입니다. 만약 사용해야 할 외부 property가 많다면 <list></list> 안에 추가할 수 있습니다.

    하단의 External Property set이 개별 property의 값을 set하는 부분입니다. Set class가 각기 다를 경우 <bean></bean> 태그를 추가함으로 하나의 property의 내용을 다수의 class에 분산 시킬 수 있습니다.

     

    주의하실 점은 property name class의 변수 명을 맞춰주시는 것이며, 아래의 (그림 4)를 참조하셔서 setter를 정의해 주셔야 합니다. Spring PropertyPlaceholderConfigurer에서는 지정된 class setter를 통해 값을 set합니다.



    (그림 4) DatPropertyBean.java


    (그림 4) property의 값을 담을 DatPropertyBean의 모습입니다.

    Setter만 지정하신다면 변수의 선언 형태는 크게 문제가 없습니다.

     

    위의 class에서는 두 개의 변수가 Business Logic에서 단순 참조되기 때문에 해당 class object를 생성하지 않고 직접 class에서 변수를 참조할 수 있도록 static으로 선언되어 있습니다.



    ps. 혹시 틀린 내용이 있으면 덧글로 지적해 주세요...^^


    댓글

Designed by Tistory.