본문 바로가기
Spring

스프링 Environment객체를 사용하여 원하는 정보 불러오기

by 코뿔송 2017. 11. 4.

스프링 Environment객체를 사용하여 원하는 정보 불러오기

 

 

 

 

 

 

 

 

스프링은 필요한 기능을 가지고 있는 객체를 XML파일로 설정하여 외부에서 필드로 주입하는 방식을 사용한다.

 

XML파일에 객체를 Bean태그를 이용하여 등록하고 생성자로 값을 전달할것인지 세터를 통해 값을 전달할것인지 정해지면 그에 맞는

 

태그를 사용해서 값을 넣어줄것이다.

 

 

 

이번에는 DB의 IP주소라던지 DB의 유저네임과 유저 패스워드와 같은 정보를 자바 코드에 저장하지 않고

 

필요할때 마다 외부파일인 XML파일에서 그때 그때 코드에서 참조하여 사용하는 방법을 사용할 것이다.

 

이 방법은 자바 코드에 DB정보가 없고 외부파일인 XML파일에 정보가 들어있기 때문에

 

DB를 변경한다던지 이전할 경우 DB의 정보에 대해 자바 코드를 수정하지 않고 XML파일만 수정 하면 된다.

 

이 역시 XML파일만 바꿔줌으로써 유연성을 더 해준다.

 

 

 

어플리케이션의 기초가 되는 Context구성 파일을 생성해준다.

 

Context가 생성이되면 Environment객체를 얻어올 수 있는 기능이 생성이 되는데 getEnvironment 한다.

 

추가로 하나의 어플리케이션은 하나의 Environment설정 파일을 가진다.

 

 

게속 해서 Environment객체를 얻어올 수 있는데 또 Environment객체의 getPropertySources메소드를

 

사용해서 환경 설정 파일안에 존재하는 설정 파일들에 접근할 수 있다.

 

getPropertySources메소드는 환경 설정 파일에 존재하는 모든 설정을 다 불러온다.

 

 

현재 얻어오고자 하는 정보가 2번째 Property에 존재한다면

 

내가 요청하는 정보에 대해 일치할 때 까지 모든 프로퍼티 소스를 읽어 들이며 일치할 경우 그 정보를 넘겨준다.

 

 

 

 

코드를 보게 되면

 

 

메인 클래스에서 ConfigurableApplicationContext라는 인터페이스를 사용하고 있다.

 

이 인터페이스는 이전에 사용하였던 context들이 이 인터페이스를 다 상속 받고 있다.

 

context를 정상적으로 얻었다면 환경 설정 객체를 사용하기 위해 get매소드를 사용하여 환경 설정 객체를 불러온다.

 

 

자바 클래스에서 InitializingBean, DisposableBean, EnvironmentAware 인터페이스를 상속 받고 있기 때문에

 

 

객체의 맴버 변수를 초기화해주는 부분은 따로 추가해주지 않았다.

 

EvnironmentAware 인터페이스를 상속받는 클래스는 반드시 setEnvironment매소드를 구현해야 한다.

 

이 메소드는 빈 객체가 생성되자 마자 실행되는 메소드이다.

 

 

InitailizingBean 객체는 bean객체가 생성되는 시점에 afterPropertiesSet매소드를 부르기 때문에 이역시 구현해주어야 한다.

 

DisposableBean인터페이스는 객체가 사라지기 이전 시점에 어떤 기능을 실행하고 싶다면 사용하는 인터페이스다.

 

destroy매소드를 구현해주어야 한다.

 

 

main클래스에서 context를 통해서 bean객체를 생성하자마자 자바 AdminConnection클래스의 setEnvironment메소드가 실행되고

 

env객체를 생성하여 설정 파일들을 처음 시점에 세터를 통해 넣어주고 있다.

 

아래의 사진은 환경 객체에 넣어줄 데이터를 하나의 파일로 생성하는 모습이다.

 

 

 

 

 

외부 파일에서 꼭 환경 객체를 사용해야되는 것은 아니다. 

 

부득이하게도 어떤 상황이 이뤄날수도 있기 때문에 외부파일로 구성하여 적절히 사용한다면 자바코드 변경없이 손 쉽게 변경할 수

 

있을것이다.

 

프로젝트의 성격맞게 적용을 하면 되는것이지 머가 좋고 안좋고 구분지을수 있는 것은 아니다. 

 

이렇게 사용할 수있다는 사실을 인지하고 있으면 도움이 될 것이다.

'Spring' 카테고리의 다른 글

스프링 프레임워크 DI 3가지 주입 방법  (0) 2017.11.03
스프링 DI의 장점  (1) 2017.11.01
스프링 설정 파일 이해  (0) 2017.10.30
자바 스프링 프레임 워크의 기본 정의  (1) 2017.10.25

댓글