프로젝트를 진행하며 숨겨야할 정보가 지금까지 2가지 정도 있었다.
첫번째는 db접속정보, 두번째는 메일계정정보였다.
db는 XML설정을 활용했기에 가져다 쓰는 게 어려움이 없었다.
1
2
3
4
5
6
7
8
9
10
|
<context:property-placeholder location="프로퍼티 파일"/>
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"></property>
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
<property name="maxTotal" value="${jdbc.maxTotal}"></property>
<property name="maxIdle" value="${jdbc.maxIdle}"></property>
</bean>
|
cs |
그런데 java 파일에서 가져다 쓰는 건...
나의 구글력이 부족해서인지 아주 코드가 난잡했다.
1
2
3
4
5
6
7
8
9
10
11
|
InputStream is = getClass().getResourceAsStream("프로퍼티 파일");
Reader reader = new InputStreamReader(is);
Properties properties = new Properties();
try {
properties.load(reader);
} catch (IOException e) {
e.printStackTrace();
}
this.userName = properties.getProperty("email.account");
this.password = properties.getProperty("email.password");
|
cs |
일단은 그냥 진행했었는데..
시간이 지나며 프로퍼티 파일에 내용이 추가될 조짐이 보이기 시작했다.
가령 FTP접속 정보가 추가되어야 한다. 그리고 Java에서 사용되어야 했다.
코드가 너무 안 예쁘고 더 편하게 쓸 방법이 있을 것 같아 검색해보니..
Spring 에서 프로퍼티 파일을 사용하는 방법이 대표적으로 3가지가 소개되고 있었다.
첫번째 방법
내가 기존에 사용했던 방식은 namespace에서 context를 체크하고 아래와 같이 작성해서 사용하는 것이었고,
1
|
<context:property-placeholder location="프로퍼티 파일"/>
|
cs |
XML파일에선 ${"key"} 의 형식으로 value를 가져올 수 있었지만, java와 JSP에선 불러오는 방법을 찾을 수 없었다.
두번째 방법
검색 결과가 많은 방법이었다. PropertyPlaceholderConfigurer 빈을 선언하는 방식이다.
1
2
3
4
|
<beans:bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<beans:property name="location" value="프로퍼티 파일"/>
<beans:property name="fileEncoding" value="UTF-8" />
</beans:bean>
|
cs |
그러나 이 방식은 Deprecated 되어 사용하지 않기로 했다.
세번째 방법
확장성이 가장 뛰어난 방법으로 생각된다. Java, JSP, XML 모든 곳에서 value를 호출할 수 있다.
namespace 에서 util을 체크한다. 드디어 util을 써먹는구나. 한 줄로 세팅 끝. 여기저기서 호출만 하면 된다.
1
|
<util:properties id="property" location="프로퍼티 파일" />
|
cs |
Java와 XML, JSP에서 호출하는 방식은 각각 다음과 같다.
1 2 3 4 5 6 7 8 9 10 11 12 | <!--"#{property['key']}", <spring:eval expression="@property['key']" /> !--> <!-- in XML !--> <property name="driverClassName" value="#{property['jdbc.driverClassName']}"></property> <!-- in Java !--> @Value("#{property['key']}") private String value; <!-- in JSP !--> <%@ taglib uri="http://www.springframework.org/tags" prefix="spring"%> <spring:eval expression="@property['jdbc.user']"/> | cs |
'Java & Spring' 카테고리의 다른 글
Google OTP 인증 Java로 구현하기 (2) | 2021.01.24 |
---|---|
Head First Design Pattern - 1. 전략 패턴 (0) | 2021.01.24 |
Spring MVC 멀티 파일 업로드 (0) | 2020.09.29 |
스프링 크롤링+스케쥴링 (0) | 2020.08.10 |
Spring MVC ajax input output 구현시험 (0) | 2020.08.10 |