下面是我研究时写的一些代码.
https://github.com/zjumty/spring-boot-demo
有兴趣的可以从上面的代码开始创建项目, 比直接从头自己写快一些.
集成了MyBatis, jetty, freemarker.
但是在学习过程中发现一个问题, 就是改了ftl模板, 刷新页面没有自动更新(我用的IDEA).
不像IDEA对典型web应用程序的支持, 只要改了ftl的内容, 转头刷新页面就出来了.
当然要把Freemarker的属性template_update_delay设置为0.
在Spring Boot的文档中说只要在application.properties或application.yml中设置如下属性就可以:
spring.freemarker.cache=false
我设置了也不能自动刷新. template_update_delay同时设置也不行.
后来才发现: 你需要Make一下才可以. IDEA快捷键Ctrl+F9
其实Spring-Boot还支持hotswap. 需要配置一下, 你就可以不用重启程序就可以把修改的代码替换为新的.
首先修改POM文件:
<dependency> <groupId>org.springframework</groupId> <artifactId>springloaded</artifactId> <version>1.2.3.RELEASE</version> </dependency>
plugin也改一下
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${spring-boot.version}</version> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>springloaded</artifactId> <version>1.2.3.RELEASE</version> </dependency> </dependencies> </plugin>
我用的是java8, 如果之前的jdk可以用1.2.2.RELEASE也可以. 我在写这篇文章时, 1.2.3还没有放到maven的官方库里, 只能从spring的库里得到:
<repositories> <repository> <id>spring-release</id> <url>http://repo.spring.io/release</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>spring-release</id> <url>http://repo.spring.io/release</url> </pluginRepository> </pluginRepositories>
然后把springloaded-1.2.3.RELEASE.jar下载下来, 放到项目的lib目录, 名字自己决定.
然后把IDEA的run参数里VM参数设置为:
-javaagent:.\lib\springloaded-1.2.3.RELEASE.jar -noverify
然后启动就可以了.
在这里之后直接改java文件, CTRL+F9编译, 然后刷新页面就可以了.
直接修改Java文件, Ctrl+F9
最后要说的是, 这个HotSwap功能时不时的会出问题. 反正用不用自己决定啦. 我也不是很推荐.