Spring的IOC设计思想,导致应用重启时大量bean被创建,从而项目越大启动速度越慢。
大型项目,改动一两行代码,重启几分钟是常态。
为了改变这一问题,利用JVM的字节码替换技术,可以做热更新或代码热交换。
- 完整的解决方案,可以使用JRebel。Jrebel是付费的,网上有破解,使用一段时间配置也是蛮麻烦,暂时放弃。
- SpringBoot本身提供了一个小工具 spring-boot-devtools
Maven引入<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional></dependency></dependencies>Gradle引入:dependencies {developmentOnly("org.springframework.boot:spring-boot-devtools")}
触发重启
- 在Eclipse中,保存修改后的文件将导致类路径被更新并触发重新启动。
- 在IntelliJ IDEA中,构建项目(
Build +→+ Build Project)具有相同的效果。 - 如果使用构建插件,
mvn compile则为Maven或gradle buildGradle运行将触发重新启动。
# 排除资源,修改资源后不重启spring.devtools.restart.exclude=static/**,public/**# 禁用重启spring.devtools.restart.enabled =falsepublic static void main(String[] args) {System.setProperty("spring.devtools.restart.enabled", "false");SpringApplication.run(MyApp.class, args);}
