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

本贴最后更新于 2985 天前,其中的信息可能已经东海扬尘

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 编译类,如果增加移除类就需要编译整个包

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3187 引用 • 8213 回帖
  • 求助
    49 引用 • 401 回帖 • 1 关注
  • Jetty
    22 引用 • 48 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • relyn

    感谢分享,已奖励 20 积分哈哈