Recent Posts
Recent Comments
Link
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Archives
Today
Total
관리 메뉴

빅데이터 AI 인공지능 IT 꿀팁 아이팁

Spring : Environment 예제 본문

JAVA

Spring : Environment 예제

아이팁 2021. 4. 7. 18:04

Environment

 


오늘은 Spring Environment를 이용해 정보를 자바코드에 저장하지 않고

 

외부 파일인 xml 파일에서 참조하여 사용하는 방법을 알아보도록 하겠습니다.

 

 

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

 

DB 를 변경하거나 이전할 경우 DB의 정보에 대해 코드를 수정하지 않고

 

xml 파일만 수정해주면 됩니다.

 

 

 

1. Context 파일 생성

 

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

 

Context 파일이 생성되면 Environment 객체를 얻어올 수 있는 기능이 생성이 되는데.

 

getEnvironment라고 합니다.

 

 

Environment 객체를 얻어올 수 있는 또 Environment객체의 getPropertySources 메소드를 

 

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

 

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

 

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

 

클라이언트가 요청하는 정보에 대해 일치할때까지 PropertySources를 읽어 들이고

 

일치할 경우 그 정보를 넘겨줍니다.

 

 

 

 

2. Main Class

 

 

 

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

 

이전에 사용하였던 Context 들이 이 인터페이스를 전부 상속받고 있습니다.

 

Context를 정상적으로 얻었으면 get 메소드를 사용해 환경 설정 객체를 불러줍니다.

 

 

자바 클래스에서 InitializingBean, DisposableBean, EnvironmentAware 인터페이스를 상속 받아

 

객체의 멤버 변수를 초기화 해주는 부분은 추가해주지 않습니다.

 

 

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

 

이 메소드는 Bean 객체가 생성되기 전에 제일 먼저 실행되는 메소드 입니다.

 

InitailizingBean 객체는 Bean 객체가 생성되는 시점에 afterPropertiesSet 메소드를 부르기 때문에

 

이것또한 구현해야 합니다.

 

3. AdminConnection

 

 

Main Class 에서 Context 를 통해 Bean 객체를 생성하자마자

 

자바 AdminConnection 클래스의 setEnvironment 메소드가 실행됩니다.

 

env 객체를 생성하여 설정 파일들을 처음 시점에 setter 를 통해 넣어줍니다.

 

4. admin.properties

 

외부 데이터 파일

 

 

환경 객체에 넣어줄 외부 데이터 파일 입니다.

 

 

결과

 

 

Environment 객체는 제일 먼저 생성되기 때문에

 

첫번째 줄에 생성이 된 모습을 볼 수 있습니다.

 

그 다음은 setEnvironment를 통해 Bean 객체에 

 

Environment 값을 받아와 넣어줌으로써

 

Bean 에 따로 Property 를 묶어주지 않고

 

값을 가져온 모습입니다.

 

오늘은 여기까지 입니다.

'JAVA' 카테고리의 다른 글

Spring : DispatcherServlet  (0) 2021.04.09
Spring : Annotation  (0) 2021.04.07
Spring : Scope / Singleton, Prototype  (0) 2021.04.06
Spring : Pencil 인터페이스  (0) 2021.04.06
Spring : 개발환경 설정  (0) 2021.04.05