Post View
Spring 설정 정보를 properties로 분리하기
- Author Kurien
- Category Java
- Registration Time 2021/01/10 14:18
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