스프링에서 빈 객체에 property 값들을 저장할때, 외부 파일을 이용해 가져와서 property값을 저장하기위해
Environment 객체를 사용한다.
1. 외부파일 생성
가장 먼저 값을 가져올 외부파일을 < 파일명.properties >형태로 생성해서, src/main/resource 경로에 저장한다.
해당 파일에 간단하게 admin.id 와 pw라는 이름의 값들을 쓰고, 이 외부 파일을 스프링에서 property값으로 주입시킬 것이다.


2. property값을 주입받을 Class 생성

AdminConnection 클래스를 생성하여 InitializingBean, EnvironmentAware 인터페이스를 상속받고,
필드에 주입받을 값인 adminId , adminPw와 Environment 객체 env를 선언후 getter/setter또한 생성한다.
스프링 빈에 객체 생성

xml 설정을 통해 스프링 빈에 해당 객체를 등록했지만, property 값들은 세팅하지않았다.
이 값들은 외부 파일을 통해 읽어올 것이다.
스프링 빈 생명주기에 따른 시점별 메소드 오버라이딩
EnvironmentAware 인터페이스의 setEnvironment() 메소드는 빈 객체를 생성하기 전에 호출되므로,
필드 멤버인 env에 매개변수 environment를 넣고,
InitializingBean인터페이스의 afterPropertiesSet() 메소드는 스프링 빈의 생명주기 단계에서 빈 객체를 생성 하는 시점에 호출되므로, 필드 멤버인 adminId,pw를 env 객체의 getProperty() 메소드를 통해 외부파일에서 설정했던 값인 admin.id,pw를 넣어준다.

그리고 MainClass에서 ConfigurableApplicationContext 타입의 참조변수 ctx를 생성하여
해당 ctx를 통해 getEnvironment() 메소드로 Environment 객체를 얻어, ConfigurableEnvironment 타입 env에 저장한다.
이후, MutablePropertySources 객체의 addLast() 메소드를 이용해서 외부 설정파일을 주입해주고,
Environment 객체의 getProperty()메소드를 통해 해당 값을 가져올 수있다.
이제, 외부파일에 있는 property값들을 Spring Bean Configuration File 에 가져올수있는 준비가 끝났으므로,
스프링 빈에 property값들은 세팅하기위해 GenericXmlApplicationContext 객체의 refresh() 메소드를 실행시키면,

스프링 빈 생명주기중, 빈 객체 생성할때 호출되는 afterPropertiesSet() 메소드를 필드멤버들을 setter로
property 값들을 외부파일에서 받아와 저장할수 있도록 오버라이딩하였기 때문에 스프링 빈 객체에 property값들이 저장되어 스프링 빈으로부터 주입받아 사용할 수 있다.
'Category > Spring' 카테고리의 다른 글
| [Spring] 스프링의 기본 xml파일들 (0) | 2023.12.22 |
|---|---|
| [Spring] Aspect-Oriented-Programming (1) | 2023.12.22 |
| [Spring] 어노테이션을 이용해서 Bean 객체 생성하기 (0) | 2023.12.18 |
| [Spring] 스프링 컨테이너 (0) | 2023.12.15 |
| [Spring] 스프링과 Bean (0) | 2023.12.15 |