일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Login with OAuth Authentication
- IBatis procedure
- 전체
- 가변인자
- jquery
- full text indexing
- Random
- 자바 야구게임
- 추상클래스
- while
- angular2
- 이클립스
- 스프링
- 상속
- 페이징
- Full text
- 로또
- 업캐스팅
- 형변환
- 전자정부
- Validations
- 다형성
- 야구게임
- 전체텍스트
- 자바
- 25가지 효율적인 sql작성법
- 상속예제
- 단축키
- 다운캐스팅
- Today
- Total
nalaolla
Properties 설정 및 Java, Jsp, Xml 소스에서 사용 방법 본문
Properties 설정 및 Java, Jsp, Xml 소스에서 사용 방법
spring 설정 xml에 다음과 같은 구문을 추가한다.
(첫번째)
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd">
<context:component-scan base-package="com.tutorialspoint" />
<!-- context:property-placeholder location="classpath:database.properties" /!-->
<context:property-placeholder location="/WEB-INF/*.properties" />
굵은 표시를 한 부분을 추가한다.
classpath:database.properties의 의미는 classpath로 지정된 경로들에 있는 database.properties를 읽어오라는 뜻이라한다.
classpath:properties/*.properties의 의미는 classpath로 지정된 경로들에 있는 확장자가 properties인 파일들을 모두 읽어 오라는 뜻이라한다.
난 /WEB-/INF/database.properties,/WEB-/INF/file.properties 2개의 properties를 넣어서
<context:property-placeholder location="/WEB-INF/*.properties" /> 이렇게 사용하였다.
주의할 점은 properties들에 같은 key 값이 있다면 원하지 않는 데이터가 읽힐수 있다고 한다. 그럴 경우 다른 방법을 사용해야한다고 한다.
spring 설정 xml에 추가로 다음과 같이 db연결 정보를 변경한다.
(두번째)
기존코드 |
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="cubrid.jdbc.driver.CUBRIDDriver" /> <property name="url" value="jdbc:cubrid:localhost:30000:springdemo:::?charset=UTF-8" /> <property name="username" value="dba" /> <property name="password" value="admin" /> </bean> <!-- Definition for studentJDBCTemplate bean --> |
신규코드 |
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> |
(세번째)
database.properties
jdbc.url=jdbc:cubrid:localhost:30000:springdemo:::?charset=UTF-8
jdbc.username=dba
jdbc.password=admin
file.properties
file_dir.thumbnail.url=/static/file_upload_data/thumbnail/
file_dir.english_word_audio_file.url=/static/english_word_audio_file/
(네번째)
자바 코드에서 해당 properties 값을 가져다 쓸때는 아래와 같이 했다.
private String fileUploadLoc;
속성으로 지정해야했다. 지역변수로는 annotation을 이용해서는 받아올수 없었다.
properites에 해당 키값이 없다면 컴파일시에 오류를 낸다.
위에 내용은 내가 메인으로 사용할 properties의 내용을 가져올때 사용할 방법이다.
나혼자 만들때는 문제가 안되겠지만 혹시나 나중에 다른사람들과 협업을 할때를 고려하여 다른 방법도 적는다.
SpEL이용
(첫번째)
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">
<util:properties id="db" location="/WEB-INF/database.properties" />
<util:properties id="file" location="/WEB-INF/file.properties" />
위에 굵게 표시한 부분을 넣어줘야한다.
주의 할점은 첫번째와는 다르게 <util:properties id="db" location="/WEB-INF/*.properties" /> 이렇게
사용할수가 없다. 에러가 발생한다. 파일명을 온전히 써주어야한다.
(두번째)
이전코드 |
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> |
신규코드 |
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="#{db['jdbc.driver']}" /> <property name="url" value="#{db['jdbc.url']}" /> <property name="username" value="#{db['jdbc.username']}" /> <property name="password" value="#{db['jdbc.password']}" /> </bean> <!-- Definition for studentJDBCTemplate bean --> |
(세번째 properties 설정은 동일하다.)
(네번째) 소스코드에서 사용할때
private String fileUploadLoc;
소스코드에서 사용할때 첫번째 것은 동일한 key가 두개이상 존재할때 내가 원하는 값을 선택할수 없는 문제가 있고.
두번째것은 값이 실제로 존재하지 않아도 오류를 내지않고 null로 들어가게 된다.
두방법을 모두 한꺼번에 사용해도 에러가 발생되지 않는다.
단 두번째 방법을 사용하고 spring 설정 xml에 첫번째 방법의 태그를 지우고
첫번째 방법과 같이
private String fileUploadLoc;
쓰게 되면 fileUploadLoc에는 "${file_dir.url}" 라는 문자열이 들어가게 된다. 조심해야한다.
JSP에서 properties 읽기
<util:properties id="db" location="/WEB-INF/database.properties" />
jsp
<spring:eval expression="@db.getProperty('jdbc.password')" />
테스트 해보니까 SpEL만 되는 것 같다. 참고 자료에는 context:property-placeholder 태그도 사용했지만
없어도 정상동작 하는 것을 확인하였다.
'SPRING' 카테고리의 다른 글
java factory pattern (팩토리 패턴) (0) | 2016.11.25 |
---|---|
<util:properties/> 와 Spring EL 로 값 가져오기 (0) | 2016.07.04 |
Java Facebook Login with OAuth Authentication (0) | 2016.06.28 |
스프링(Spring) 개발 - (18) 페이징 (jQuery와 Ajax) (2) | 2016.06.25 |
스프링(Spring) 개발 - (17) 페이징 (전자정부 프레임워크 이용) (0) | 2016.06.25 |