Spring properties(프로퍼티) 값 가져오도록 설정
2019. 12. 18. 21:08ㆍ3_개발/3_1_JAVA
요즘 sts를 써서 이 방법을 많이들 안 쓰지만,
그래도 sts를 안 쓰는 경우에는 많이들 사용하는 방법이다.
1. xml 설정(web.xml에서 선언한 servlet 관련 xml 파일)
- 상단 bean에 util을 사용할 것이라고 선언 필요
<beans xmlns="http://www.springframework.org/schema/beans"
...
xmlns:util="http://www.springframework.org/schema/util"
...
xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
...
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd
..">
- xml 파일 내의 선언
<util:properties id="호출할 이름" location="classpath:/임의의 경로/설정파일.properties"/>
ex) 데이터 베이스에 대한 내용을 선언할 경우
<util:properties id="db" location="classpath:/config/db.properties"/>
2. properties 파일
db.properties
#db DriverClassName
jdbc.DriverClassName=com.mysql.jdbc.Driver
#db 접속 url
jdbc.Url=jdbc:mysql://127.0.0.1:3306/dbname
#db id
jdbc.UserId=user
#db 비밀번호
jdbc.Pw=1234
이런 식으로 선언 가능하다.
(참고로 properties 내에서 #은 주석을 의미한다.)
3. properties 값을 xml내부에서 불러오는 경우
<property name="driverClassName" value="#{xml에서 선언해 준 이름['properties 파일 내에 선언해 준 이름']}" />
<property name="driverClassName" value="#{db['jdbc.DriverClassName']}" />
4. java 파일 내부에서 properties 값을 가져오는 경우
@Value("#{xml에서 선언해 준 이름 ['properties 파일 내에 선언해 준 이름']}")
private String java소스 내에서 사용할 변수명;
@Value("#{db['jdbc.Url']}")
private String jdbcUrl;
이럴 경우 당연한 말이지만 해당 class에 아래와 같은 내용을 추가해 줘야 한다.
import org.springframework.beans.factory.annotation.Value;
다만 Value 어노테이션을 사용 가능한 곳은
1. 해당 클래스가 최소 @Component 이상 선언이 되어 있어야 한다.
2. static 클래스는 사용 불가능하다.
3. static 변수도 사용 불가능하다.
ex) public static String jdbcUrl;
'3_개발 > 3_1_JAVA' 카테고리의 다른 글
[Stream] Java Stream을 이용한 배열 자르기 (0) | 2020.08.16 |
---|---|
List 형태의 객체들의 null 체크 또는 개수가 존재하는지 확인(null과 isEmpty()의 차이) (0) | 2019.12.25 |
[Stream] Java Stream 정렬(sort) 사용법(sorted)(1) (0) | 2019.12.20 |
static 변수에서 @value 사용(properties 값을 static으로 선언) (0) | 2019.12.18 |
외부 jar 파일 maven에 추가(custom 라이브러리 추가) (0) | 2019.12.18 |