추출사이트 : https://ktko.tistory.com/m/entry/Spring-properties-%EC%9D%BD%EC%96%B4%EC%98%A4%EA%B8%B0
properties 읽어오기(3가지)
1) PropertyPlaceholderConfigurer를 이용한 properties 파일 읽어오기
2) context:property-placeholder를 이용한 properties 파일 읽어오기
3) <util:properties/> 와 Spring EL을 이용한 properties 파일 읽어오기
1) PropertyPlaceholderConfigurer를 이용한 properties 파일 읽어오기
프로퍼티를 읽어오기 위해 간단한 선행 작업으로 /WEB-INF안에 config 폴더를 생성 후 안에 config.prpoerties라는 프로퍼티 파일을 생성
config.properties의 내용
#### Oracle DB Info #### db.driver=oracle.jdbc.driver.OracleDriver db.url=jdbc:oracle:thin:@localhost:1521:orcl db.username=ktko db.password=ktko1234 #### File Path #### file.path=C:\\
servlet-context.xml
location 프로퍼티의 값에는 콤마나 공백으로구분된 프로퍼티 파일 목록이 오며, 프로퍼티 파일에 포함된 프로퍼티의 값은 '${프로퍼티 이름}' 형식으로 사용할 수 있습니다. 예제를 보면 config.properties 안에 있는 db.driver의 값을 xml 파일에서 '${db.driver}' 형태로 사용할 수 있습니다.
<beans:bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<beans:property name="location" value="/WEB-INF/config/config.properties"/>
<beans:property name="fileEncoding" value="UTF-8" />
</beans:bean>
<beans:bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <beans:property name="driverClassName" value="${db.driver}"/> <beans:property name="url" value="${db.url}"> <beans:property name="username" value="${db.username}"/> <beans:property name="password" value="${db.password}"/> </beans:bean>
Java Source
@value 어노테이션 선언으로 값을 가져올 수 있습니다.
@Controller
public class HomeController {
@Value("${file.path}") private String file_Path; @Value("${db.username}") private String dbUser; @RequestMapping(value = "/", method = RequestMethod.GET) public String home(Locale locale, Model model) { model.addAttribute("filePath", file_Path); model.addAttribute("dbUser", dbUser); return "home"; } }
JSP Page
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
<title>Home</title>
</head>
<body>
<h1>
Hello world!
</h1>
<P> FilePath is ${filePath} </P>
<P> dbUser is ${dbUser} </P>
</body>
</html>
실행 결과
한개 이상의 프로퍼티를 읽어오기
이번에는 resources 폴더 안에 config 폴더를 생성하고 위에 생성했던 config.properties의 내용을 config.properties, config2.properties 두개로 나누어 저장하였습니다.
1. config.properties
#### Oracle DB Info #### db.driver=oracle.jdbc.driver.OracleDriver db.url=jdbc:oracle:thin:@localhost:1521:orcl db.username=ktko db.password=ktko1234
2. config2.properties
#### File Path ####
file.path=C:\\
servlet-context.xml
<beans:bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <beans:property name="locations"> <beans:list> <beans:value>classpath:/config/config.properties</beans:value> <beans:value>classpath:/config/config2.properties</beans:value> </beans:list> </beans:property>
</beans:bean>
<beans:bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <beans:property name="driverClassName" value="${db.driver}"/> <beans:property name="url" value="${db.url}"> <beans:property name="username" value="${db.username}"/> <beans:property name="password" value="${db.password}"/> </beans:bean>
실행 결과는 위와 동일합니다.
2) context:property-placeholder를 이용한 properties 파일 읽어오기
먼저 context:property-placeholder을 사용하기 위해서는 servlet-context.xml에서 설정이 필요합니다.
아래 사진처럼 namespace시트에서 context 박스 부분을 체크합니다.
servlet-context.xml
<context:property-placeholder location="classpath:config/*"/>
<beans:bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<beans:property name="driverClassName" value="${db.driver}"/>
<beans:property name="url" value="${db.url}">
<beans:property name="username" value="${db.username}"/>
<beans:property name="password" value="${db.password}"/>
</beans:bean>
3) <util:properties/> 와 Spring EL을 이용한 properties 파일 읽어오기
먼저 servlet-context.xml의 네임스페이스 시트로 들어가 util 체크박스를 클릭합니다.
servlet-context.xml
읽어드릴 properties id를 정하고, 위치를 입력합니다
<util:properties id="dbinfo" location="classpath:/config/config.properties"/>
<util:properties id="fileinfo" location="classpath:/config/config.properties"/>
Java Source
@value 어노테이션 선언으로 값을 가져올 수 있습니다.
${"'#id명'[프로퍼티안에 저장된 값]"}
@Controller public class HomeController { @Value("#{fileinfo['file.path']}") private String file_Path; @Value("#{dbinfo['db.username']}") private String dbUser; @RequestMapping(value = "/", method = RequestMethod.GET) public String home(Locale locale, Model model) { model.addAttribute("filePath", file_Path); model.addAttribute("dbUser", dbUser); return "home"; } }
//CODE
'웹개발 > spring' 카테고리의 다른 글
Spring Java 수정 시 톰캣 재 실행 안하고 적용하기. (0) | 2022.07.26 |
---|---|
Spring Boot 프로젝트 생성 (0) | 2022.07.01 |
스프링 Filter 와 Listener (0) | 2022.02.16 |
스프링 Bean의 개념과 Bean Scope 종류 (0) | 2022.02.16 |
스프링 필터 (필터와 인터셉터 차이점) (0) | 2022.02.16 |
댓글