본문 바로가기

Java/Spring

db.properties XML로 변경

평소처럼 db.properties 를 사용하다가 어쩌다 검색을 해보니

stackoverflow나 영미권 블로그들에서는 *.properties를 사용하지 않는 것을 보았습니다. 


최신 stackoverflow 스프링 설정 관련 답글들을 보면 대부분 xml 보다는 java를 통한 설정을 선호하는 것 같고요. 

*.properties는 그보다 더한 구식인가 봐요. 


그래서 저도 db.properties를 xml로 바꿔서 딱 한발짝만 따라가보기로 했습니다. 


db.properties.xml 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd" >
<properties>
    <entry key="db.driverClassName">com.mysql.cj.jdbc.Driver</entry>
    <entry key="db.jdbcUrl">jdbc:mysql://127.0.0.1:3306/schema</entry>
    <entry key="db.username">id</entry>
    <entry key="db.password">pw</entry>
</properties>
cs


생김새는 원래 쓰던 것과 비슷하네요. 


저는 root-context.xml 에 dataSource 관련 설정이 있습니다.

먼저 Namespaces로 가서 util을 추가해 주고 아까 만든 db.properties.xml 을 가져옵니다. 

<context:property-placeholder/> 대신 <util:properties> 를 사용합니다.

<!-- db.properties.xml -->
<util:properties id="config" location="classpath:/conf/db.properties.xml" />
cs


그리고 아까 선언했던 key 값을 사용해서 가져오면 됩니다.

<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
    <property name="driverClassName" value="#{config['db.driverClassName']}" />
    <property name="jdbcUrl" value="#{config['db.jdbcUrl']}" />
    <property name="username" value="#{config['db.username']}" />
    <property name="password" value="#{config['db.password']}" />
</bean>
cs


.gitignore 수정 잊지 마시구요~!