freemarker热部署(Intellij Idea)
2015-09-10 22:43
288 查看
IntelliJ + springmvc + freemarker 开发环境 缓存设置
2015-05-26 13:31通过阅读源码搞定了
先查看web.xml的缓存控制。这是最高优先级的缓存控制,如果开了缓存,生成的页面就会缓存在tomcat里。
再设置springmvc的缓存控制。一旦springmvc发现没有缓存开启,就会进行cache,如果发现缓存没开启,则会每次生成一个view(通过调用freemarker的方法来进行)。
再设置freemakre的缓存控制。freemakre通过一个时间长度来控制缓存
在上面两步完成之后,一般来说就可以了。但是还有一个问题是,web访问的是target目录下的classpath和WEB-INFO目录,而我们开发环境修改的模板文件不是target目录下。这就要求IntelliJ要有热部署功能,也就是在修改文件后,能自动更新target目录下的文件数据。
web.xml 缓存
如果web.xml里面存在类似下面的代码,就要把它注释掉,否则修改freemarker页面再刷新浏览器是不会生效的。<filter> <filter-name>productCacheFilter</filter-name> <filter-class>net.sf.ehcache.constructs.web.filter.SimplePageCachingFilter</filter-class> <init-param> <param-name>cacheName</param-name> <param-value>product</param-value> </init-param> </filter>
<filter-mapping> <filter-name>productCacheFilter</filter-name> <url-pattern>/product/list/*</url-pattern> </filter-mapping> 这段代码是采用ehcache来缓存页面。
springmvc 设置解析器 缓存设置
<bean id="viewResolverFtl" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"> <property name="suffix" value=".ftl"/> <property name="order" value="0"/> <property name="contentType" value="text/html;charset=UTF-8"/> <!-- 此变量值为pageContext.request, 页面使用方法:rc.contextPath --> <property name="requestContextAttribute" value="rc"/> <property name="cache" value="false"/> </bean>
这里关键是让 cache设置为 false.
开发环境下为false, 线上环境是true, 避免所有缓存
freemarker 缓存设置
<!-- 配置FreeMarkerConfigurer --> <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <property name="templateLoaderPath" value="/WEB-INF/freemarker/"/> <property name="freemarkerSettings"> <props> <prop key="template_update_delay">0</prop> </props> </property> </bean>
这里关键是设置 template_update_delay 为0 ,因此每次在刷新 free marker页面时,均会进行修改时间 的校验,判断是否应该重新载入。
IntelliJ 热部署设置
通过热部署,就可以在更改任意文件时,都不用重启,就可以将文件或数据拷贝到 target目录下。相关文章推荐
- 极度的冷静与耐心
- 杭电2122Ice_cream’s world III
- 面经
- UICollectionView自定义布局之风火轮[译]
- 关于MVC的总结
- 求数列的和
- Struts2学习整理
- 软件测试常用术语
- LIBTIFF配置方法总结
- Python 使用断言的最佳时机
- 麻将胡牌判决
- "Python"学习笔记(七)(切片)
- HDU 4725 The Shortest Path in Nya Graph
- 置换问题
- Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: com/mchange/v2/ser
- Java中request请求之 - 带文件上传的form表单
- nginx中http的fastcgi模块的配置指令1
- Java利用递归的方法求整数数组中的最大值
- uva 10246 - Asterix and Obelix(最短路)
- 03_获取手机内存状态