Post View

Spring 설정 정보를 properties로 분리하기

Spring을 사용하다 보면 환경에 따라 바뀌어야 하는 값이 여러 context에 퍼져있는 경우가 많습니다.
이런 값들을 편리하게 관리할 수 있도록 properties로 분리해보겠습니다.

먼저 링크(https://github.com/kurien92/kreBlog/commit/258efe6dcb62802bd9549ca10009189168f7d817)에서 수정사항을 확인하신 후 아래의 내용을 확인하시기 바랍니다.

편의상 mybatis-context.xml에 해당하는 부분만 작성했습니다.

config.properties

db.driverClassName=org.mariadb.jdbc.Driver
db.url=jdbc:mariadb://mariadb:3306/kreblog?useTimezone=true&serverTimezone=Asia/Seoul&useSSL=false
db.username=kre
db.password=kre1234

먼저 config.properties 파일을 생성하여 mybatis-context.xml에서 사용하던 값들을 property로 지정합니다.

root-context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">

	<!-- Root Context: defines shared resources visible to all other web components -->
	<context:property-placeholder location="classpath:/properties/*.properties" />
</beans>

root-context.xml 파일에 config.properties를 불러오는 설정을 추가합니다.
저의 경우에는 properties경로 내의 모든 properties 파일(*.properties)을 불러오도록 해두었습니다.

mybatis-context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
     
    <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${db.driverClassName}"/>
        <property name="url" value="${db.url}"/>
        <property name="username" value="${db.username}"/>
        <property name="password" value="${db.password}"/>
    </bean>

   <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
      <property name="dataSource" ref="dataSource" />
      <property name="mapperLocations" value="classpath*:/mybatis/mapper/**/*-mapper.xml" />
   </bean>
    
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
      <constructor-arg index="0" ref="sqlSessionFactory" />
   </bean>
</beans>

mybatis-context.xml에서는 ${property명}으로 config.properties에 입력했던 데이터를 사용할 수 있습니다.

properties 파일을 별도로 나누어 쉽게 설정을 관리할 수 있습니다.
이렇게 나누어진 config.properties는 암호가 그대로 보여지게 되는데, 다음 포스팅에서는 Jasypt를 이용하여 properties를 암호화 하는 방법을 작성하도록 하겠습니다. 

Comments