Spring - Environment객체(Property값 가져오기)
프로그래밍 정리/Spring
2019. 12. 9. 14:29
반응형
Spring - Environment객체(Property값 가져오기)
-Environment객체는 하나의 어플리케이션에, 딱 한번만 선언이 가능하다.
그 이후 만든 객체는 같은 객체라고 봐도 무방하다.
활용1 - Property 파일
1. Property 값 가져오기
다음과 같이 properties 파일의 값들을 가져오는 방법을 알아보자
admin.properties 파일
1 2 | admin.id=abcde admin.pw=12345 | cs |
2. Environment 객체 만들기
1. Context 객체 생성
2. Context 메소드 사용 -> Environment 객체를 가져온다.
3. Environment객체를 이용하여 PropertySource를 가져온다.
1 2 3 | ConfigurableApplicationContext ctx = new GenericXmlApplicationContext(); //Context 객체생성 ConfigurableEnvironment env = ctx.getEnvironment(); //Environment객체 가져옴 MutablePropertySources propertySources = env.getPropertySources(); //PropertySource 가져옴 | cs |
3. Environment 객체를 이용해 가져오기
1 2 3 4 5 6 7 | try { propertySources.addLast(new ResourcePropertySource("classpath:admin.properties")); System.out.println( env.getProperty("admin.id") ); System.out.println( env.getProperty("admin.pw") ); } catch (IOException e) {} | cs |
활용2 - Bean
1. 이미 선언된 Environment 객체 가져오기
-AdminConnection.java
|
-applicationCTX.xml
Bean을 이용한 객체선언
1 | <bean id="adminConnection" class="com.javalec.ex.AdminConnection" /> | cs |
-main
기본 컨테이너 생성
※컨테이너 생명주기 글 참고(https://cloud0477.tistory.com/60)
|
-------------------------------------------------------------모든소스-------------------------------------------------------------------
-MainClass.java
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 31 32 33 34 35 36 37 38 39 40 | package com.javalec.ex; import java.io.IOException; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.support.GenericXmlApplicationContext; import org.springframework.core.env.ConfigurableEnvironment; import org.springframework.core.env.MutablePropertySources; import org.springframework.core.io.support.ResourcePropertySource; public class MainClass { public static void main(String[] args) { ConfigurableApplicationContext ctx = new GenericXmlApplicationContext(); ConfigurableEnvironment env = ctx.getEnvironment(); MutablePropertySources propertySources = env.getPropertySources(); try { propertySources.addLast(new ResourcePropertySource("classpath:admin.properties")); System.out.println( env.getProperty("admin.id") ); System.out.println( env.getProperty("admin.pw") ); } catch (IOException e) {} GenericXmlApplicationContext gCtx = (GenericXmlApplicationContext)ctx; gCtx.load("applicationCTX.xml"); gCtx.refresh(); AdminConnection adminConnection = gCtx.getBean("adminConnection", AdminConnection.class); System.out.println("admin ID : " + adminConnection.getAdminId()); System.out.println("amdin PW : " + adminConnection.getAdminPw()); gCtx.close(); ctx.close(); } } | cs |
-AdminConnection.java
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | package com.javalec.ex; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.context.EnvironmentAware; import org.springframework.core.env.Environment; public class AdminConnection implements EnvironmentAware, InitializingBean, DisposableBean { private Environment env; private String adminId; private String adminPw; public AdminConnection() { System.out.println("AdminConnection 생성자"); } @Override public void setEnvironment(Environment env) { System.out.println("setEnvironment()"); setEnv(env); } public void setEnv(Environment env) { this.env = env; } public void setAdminId(String adminId) { this.adminId = adminId; } public void setAdminPw(String adminPw) { this.adminPw = adminPw; } public String getAdminId() { return adminId; } public String getAdminPw() { return adminPw; } @Override public void afterPropertiesSet() throws Exception { System.out.println("afterPropertiesSet()"); setAdminId(env.getProperty("admin.id")); setAdminPw(env.getProperty("admin.pw")); } @Override public void destroy() throws Exception { System.out.println("destroy()"); } } | cs |
-applicationCTX.xml
1 2 3 4 5 6 7 8 9 | <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="adminConnection" class="com.javalec.ex.AdminConnection" /> </beans> | cs |
-admin.properties
1 2 | admin.id=abcde admin.pw=12345 | cs |
반응형
'프로그래밍 정리 > Spring' 카테고리의 다른 글
Spring - XML과 Bean을 이용해 .properties 값 가져오기 (0) | 2019.12.09 |
---|---|
spring - Namespace 사용법 (0) | 2019.12.09 |
Spring - 컨테이너 생명주기, Bean 생명주기 (0) | 2019.12.09 |
Spring - DI 2가지방법과 응용 (0) | 2019.12.04 |
spring - DI(Dependency Injection,의존 주입) (0) | 2019.12.04 |