SPRING

외부 설정 Property

nang. 2019. 3. 28. 03:49
반응형
SMALL

- 스프링에서 설정한건 스프링에서만 주로 쓰이니까..

- 외부에서 작성해 놓은 파일을 스프링에 가져와서 쓰자!

- 환경변수나 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");

반응형
LIST

'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