자 오늘은 property 설정에 다뤄 보겠습니다.
property 정의
서버정보나 파일 업로드 경로 같이 중요한 환경정보를 담은 프로퍼티 파일을 따로 만들어 관리하기 용이하게 하기 위해 있는 파일
property 사용하기
저 같은 경우는 database 연결을 다음과 같이 합니다
datasource-context.xml 파일
<bean id="dataSourceSpied" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:1234/"/>
<property name="username" value="test"/>
<property name="password" value="123123"/>
</bean>
위의 정보는 예시 정보를 임의로 넣었습니다.
자 이제 프로퍼티를 설정하도록 하겠습니다
설정방법에는 몇개의 방법이 있는데 저는 SpEL방법을 이용하여 하도록
(방법을 다 사용해본 결과 이것만 작동 했습니다..)
일단 프로퍼티 파일을 만듭니다.
파일은 New-> File
자 그리고 property 정보를 입력합니다
globals.properties파일
# SERVER-LOCAL
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:1234
jdbc.user=admin
jdbc.password=123123
# SERVER-REAL
#jdbc.driver=com.mysql.jdbc.Driver
#jdbc.url=jdbc:mysql://localhost:1234
#jdbc.user=admin
#jdbc.password=123123
이렇게 기존 로컬서버를 이용할땐 위의 정보를, 실 서버에 반영할때는 주석 해제/ 처리를 각각 적용시켜 주면 됩니다.
자 이제 설정 하는 방법에 대해 알아보겠습니다.
servlet-context.xml파일
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.1.xsd">
.
.
.
.
.
<!-- Globals Properties -->
<util:properties id="property" location="/WEB-INF/spring/property/globals.properties" />
</beans:beans>
자 우선 상단에 위와 같은 내용을 추가만 해주시면 됩니다.
그리고 util을 이용하여 프로퍼티를 설정 합니다.
globals.properties파일
<bean id="dataSourceSpied" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="#{property['jdbc.driver']}"/>
<property name="url" value="#{property['jdbc.url']}" />
<property name="username" value="#{property['jdbc.user']}"/>
<property name="password" value="#{property['jdbc.password']}"/>
</bean>
이렇게 #{해당설정id['프로퍼티 변수']} 로 설정하면 끝입니다.
자 그리고 자바단에서 사용 하려면 다음과 같이 사용하면 됩니다.
@Value("#{property['jdbc.url']}")
private String dbURL;
컨트롤서 상단에 선언하고 변수 처럼 사용하시면 됩니다.
참고사항
스프링에서 프로퍼티 정보를 가져올때 Controller에서는 가져오지만 Class 파일에서는 못가져 오는 경우가 있습니다.
이를 위한 해결방법을 소개해 드리겠습니다.
첫번째 방법은 쉽게 클래스에 매개변수로 보내는 방법이 있습니다.
두번째 방법은 다음과 같습니다.
일단 프로퍼티를 가져오지 못하는 이유는 new를 사용하면서 가져올 수 없습니다.
예를 들면
FileUpload fileUpload = new FileUpload();
이런식으로 클래스를 사용하실 텐데요 이를 위한 해결방법으로는
Controller 상단에 서비스를 등록합니다
@Resource(name ="fileUpload")
private FileUpload fileUpload;
이렇게 서비스로 등록을 하고 사용하시면 프로퍼티를 제대로 가져올 수 있습니다.
감사합니다.
'프로그래밍 > 스프링[Spring]' 카테고리의 다른 글
[스프링] 자바 날짜[Date] 비교하는 방법 (0) | 2019.06.03 |
---|---|
[스프링] 스프링에서 네이버 이메일을 이용한 Email 발송방법 (0) | 2019.05.07 |
[Spring] No adapter for handler 해결 하기[HTTP Status 500] (0) | 2019.05.02 |
[Spring] 스프링, 자바에서 String 공백 제거하기 (0) | 2019.05.02 |
[스프링] RequestParam 을 VO로 바로 받는 방법 (0) | 2019.04.26 |