- 스프링에서 설정한건 스프링에서만 주로 쓰이니까..
- 외부에서 작성해 놓은 파일을 스프링에 가져와서 쓰자!
- 환경변수나 file에다가 property를 설정해놓는거지 그걸 가져와서 스프링에서 쓰자는거야
- 수정이 용이하다. properties 파일만 수정하면 되니까
★ Propetry File은 config/db.properties 이런식으로 config 아래에 .properties 확장자로 만들어져있음
ex)
jdbc.driver=com.mysql.jdbc.Driver
이런식으로
별칭.필드이름=경로..?
① PropertyPlaceholderConfigurer 이용
- 이 객체를 통해 외부에 존재하는 property file을 load
- file의 목록을 location 또는 locations 속성의 값으로 제공
- file에 정의된 프로퍼티들은 ${프로퍼티이름} 형식으로 가져와서 쓴다.
- 클래스 이용하는거니까 클래스 bean 등록 해줘야 해
xml에서
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location"
value="classpath:config/db.properties" /> 해주고
===> 만약에 참조할 외부 file이 여러개면 locations 속성을 쓰거나 <list> 사용
<bean id="connProvider" ~~
<property name="jdbcDriver"
value="${jdbc.driver} />
이런식으로 불러옴
===> value 속성에 "${프로퍼티 파일에서 정의한 별칭.필드이름}" 형식으로
② <context:property-placeholder /> 이용
- ①의 PropertyPlaceholderConfigurer bean 설정이 필요 없음
( 클래스 사용이 아니니까 클래스 bean 등록 필요 X )
- xml에
<context:property-placeholder location="classpath:config/db.properties" /> 추가
<bean id="connProvider" ~~ /> 값 가져오는 태그는 그대로 ( ${~~} )
- 만약 property 파일이 여러개면...
: 첫번째 <context:property-placeholder location="classpath:config/db.properties" /> 태그에서 지정된 파일만 load 됨
- 그럼 어떡해?
: 별도의 설정 파일 사용
: 여러개 파일 써주기
: location="classpath:/db.properties, classpath:/app.properties" />
or
: location="classpath:/*.properties" />
③ Environment
- 잘 안씀
- ConfigurableApplicationContext
- ConfigurableEnvironment
- env.getProperty("java.version");
'SPRING' 카테고리의 다른 글
[JdbcTemplate] 그 외 메소드 / 가변 길이 인자 지원 (0) | 2019.05.13 |
---|---|
[JdbcTemplate] List<T> query 메소드들 (0) | 2019.05.13 |
Bean Scope (Bean 유효범위) (0) | 2019.03.28 |
DI Java Code (0) | 2019.03.27 |
DI Annotation (0) | 2019.03.25 |