본문 바로가기
웹개발/spring

스프링 properties 읽어오기

by heavenLake 2022. 2. 17.
반응형

 

 추출사이트 : 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
반응형

댓글