ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 토비의 스프링 3.1 - 프로퍼티 소스
    Spring 2017. 8. 6. 22:26


    토비의 스프링 3.1의 내용을 요약한 자료입니다. 개념적인 설명만 요약하였으며 개념의 이해를 돕는 구체적인 코드 및 예제를 살펴보시려면 책을 참조하시기 바랍니다. 

    포스팅한 내용이 저작권의 문제가 발생할 수 있는 경우 게시물은 삭제/비공개 처리 될 수 있습니다.


    @PropertySource


    - 프로퍼티에 들어갈 DB 연결정보는 텍스트로 된 이름과 값의 쌍으로 구성되면 된다.

    - 프로퍼티 파일의 확장자는 보통 properties이고, 키=값 형태로 프로퍼티를 정의한다. 


    1
    2
    3
    4
    db.driverClass=com.mysql.jdbc.Driver
    db.url=jdbc:mysql://localhost/springbook?characterencoding=UTF-8
    db.username=spring
    db.password=book

    - properties 파일의 내용을 컨테이너의 프로퍼티 소스로 사용하도록 @PropertySource 애노테이션을 넣어준다
    1
    2
    @PropertySource("/database.properties")
    public class AppContext {

    - @PropertySource로 등록한 리소스로부터 가져온 프로퍼티 값은 컨테이너가 관리하는 Environment 타입의 환경 오브젝트에 저장되며 @Autowired를 통해 필드로 주입받을 수 있다.
    - Environment 오브젝트의 getProperty() 메소드를 이용해 프로퍼티 값을 가져올 수 있다.
    - AppContext 소스코드를 수정하고 빌드할 필요없이 환경에 따라 달라지는 DB 연결정보는 프로퍼티 파일 내용을 수정하기만 하면 된다.


    PropertySourcesPlaceholderConfigurer

    - @Value 애노테이션을 사용하면 Environment 오브젝트를 @Autowired 로 주입받을 필요가 없다. 
    - 프로퍼티 소스로부터 가져온 값을 @Value 필드에 주입하려면 PropertySourcesPlaceholderConfigurer를 빈으로 정의해줘야 한다.

    1
    2
    3
    4
    @Bean
    public static PropertySourcesPlaceholderConfigurer placeholderConfigurer() {
        return new PropertySourcesPlaceholderConfigurer();
    }

    -  빈 팩토리 후처리기로 사용되는 빈의 설정 메소드는 반드시 스태틱 메소드로 선언해야 한다.
    - @Value로 선언한 네 개필드에는 프로퍼티 값이 자동으로 주입될 것이다.

    - @Value를 이용하면 타입 변환이 필요한 프로퍼티를 스프링이 알아서 처리해준다는 장점이 있다.
    - 하지만 프로퍼티 값을 주입받도록 클래스에 필드를 선언하는 것은 조금 부담스러울 수 있다.
    - Environment를 이용해 프로퍼티 값을 가져오는 방법과 @Value를 이용하는 방법 중 작성하기 편하고 코드를 이해하기 쉽다고 생각되는 방법을 선택하면 된다.


Designed by Tistory.