如何提高基于 Spring 项目的调试速度

1. 优化容器扫描加载

  1. 分模块
  2. 分包扫面,自下而上集成
  3. 替换使用内存数据库
  4. 使用延迟加载

2. 热部署

  1. 使用 jetty 插件
 <plugin>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-maven-plugin</artifactId>
                <version>9.2.12.v20150709</version>
                <configuration>
                    <stopKey>stop</stopKey>
                    <stopPort>4502</stopPort>
                    <webApp>
                        <contextPath>/</contextPath>
                    </webApp>
                    <httpConnector>
                        <port>8080</port>
                    </httpConnector>
                    <reload>manual</reload>
                </configuration>
            </plugin>

原来 jetty 插件有两个团体推出,现在更新使用 eclipse.org 的版本

  1. Spring Boot
    不知道为什么已经取消模板的缓存,还是需要编译替换文件才能刷新
    spring.devtools.restart.exclude=static/**,public/**
    spring.devtools.restart.enabled=true
    spring.freemarker.cache=false
    spring.freemarker.suffix=.ftl
    

3. 热替换

  1. HotSpot
    只能更改方法体,或者更改成员属性的参数
    1474004609007

Debug 更改代码,然后重新编译类就可以替换

  1. Spring-Loaded
    方法 | 字段 | 构造器 进行 添加 | 修改 | 删除类型 | 方法 | 字段 | 构造器 上的注解也允许修改
    1474004692232

但是因为 Spring 的 IOC 原理,如果是注解的类还是需要重启容器才能起效

  -javaagent:C:\Tools\springloaded-1.2.5.RELEASE.jar  -noverify

需要配置下载的包,然后在使用 jetty 启动的时候指定参数
1474003592881

IDEA 使用 Ctrl+Shift+F9 编译类,如果增加移除类就需要编译整个包