화면 커스터마이징 요구는 많은데, 건건이 받아서 올리고 배포하고 하려니 골치 아파서 찾아본 해결책.
기존 파일로 존재하는 vm 파일도 그대로 쓰고, 없으면 db에서 가져오게 하는게 요점.
<bean id="dsVelocityEngine"
class="org.springframework.ui.velocity.VelocityEngineFactoryBean">
<property name="resourceLoaderPath" value="/WEB-INF/vm"></property>
<property name="velocityPropertiesMap">
<map>
<entry key="resource.loader" value="file,ds"></entry>
<entry key="ds.resource.loader.instance">
<ref bean="templateLoader"/>
</entry>
<entry key="ds.resource.loader.resource.table">
<value>vm_templates</value>
</entry>
<entry key="ds.resource.loader.resource.keycolumn">
<value>name</value>
</entry>
<entry key="ds.resource.loader.resource.templatecolumn">
<value>content</value>
</entry>
<entry key="ds.resource.loader.resource.timestampcolumn">
<value>updated</value>
</entry>
<entry key="input.encoding" value="utf-8"></entry>
<entry key="output.encoding" value="utf-8"></entry>
<entry key="directive.foreach.counter.name" value="velocityCount"></entry>
<entry key="directive.foreach.counter.initial.value" value="0"></entry>
</map>
</property>
</bean>
<!-- Velocity Database Template Loader -->
<!-- dataSource bean은 이미 정의되어 있음 -->
<bean id="templateLoader"
class="org.apache.velocity.runtime.resource.loader.DataSourceResourceLoader">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- Velocity Configurer -->
<!--
configurer 에서 velocityEngine 을 잡을 경우,
resourceLoaderPath나 기타 velocity property 는 여기가 아닌 velocityEngine 에서 설정해줘야 된다.
-->
<bean id="velocityConfigurer"
class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
<property name="velocityEngine" ref="dsVelocityEngine"></property>
</bean>
<!-- Velocity Resolver -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
<property name="exposeRequestAttributes" value="true" />
<property name="exposeSessionAttributes" value="true" />
<property name="contentType" value="text/html; charset=UTF-8" />
<property name="cache" value="true" />
<property name="suffix" value=".vm" />
<property name="viewClass" value="org.springframework.web.servlet.view.velocity.VelocityView" />
</bean>
class="org.springframework.ui.velocity.VelocityEngineFactoryBean">
<property name="resourceLoaderPath" value="/WEB-INF/vm"></property>
<property name="velocityPropertiesMap">
<map>
<entry key="resource.loader" value="file,ds"></entry>
<entry key="ds.resource.loader.instance">
<ref bean="templateLoader"/>
</entry>
<entry key="ds.resource.loader.resource.table">
<value>vm_templates</value>
</entry>
<entry key="ds.resource.loader.resource.keycolumn">
<value>name</value>
</entry>
<entry key="ds.resource.loader.resource.templatecolumn">
<value>content</value>
</entry>
<entry key="ds.resource.loader.resource.timestampcolumn">
<value>updated</value>
</entry>
<entry key="input.encoding" value="utf-8"></entry>
<entry key="output.encoding" value="utf-8"></entry>
<entry key="directive.foreach.counter.name" value="velocityCount"></entry>
<entry key="directive.foreach.counter.initial.value" value="0"></entry>
</map>
</property>
</bean>
<!-- Velocity Database Template Loader -->
<!-- dataSource bean은 이미 정의되어 있음 -->
<bean id="templateLoader"
class="org.apache.velocity.runtime.resource.loader.DataSourceResourceLoader">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- Velocity Configurer -->
<!--
configurer 에서 velocityEngine 을 잡을 경우,
resourceLoaderPath나 기타 velocity property 는 여기가 아닌 velocityEngine 에서 설정해줘야 된다.
-->
<bean id="velocityConfigurer"
class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
<property name="velocityEngine" ref="dsVelocityEngine"></property>
</bean>
<!-- Velocity Resolver -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
<property name="exposeRequestAttributes" value="true" />
<property name="exposeSessionAttributes" value="true" />
<property name="contentType" value="text/html; charset=UTF-8" />
<property name="cache" value="true" />
<property name="suffix" value=".vm" />
<property name="viewClass" value="org.springframework.web.servlet.view.velocity.VelocityView" />
</bean>