Grails 2.0 后,新增了一种交互模式,用于启动工程、执行命令。
交互模式下,run-app 然后 stop-app 后,由于大量的信息(包括类里的静态变量)依然会缓存在内存里,因此再次 run-app 时,启动速度和运行速度会有很大的提升。
BroFramework、BroBPM 目前也可以支持交互模式的启动,并且做了一些额外的优化,比如第二次 run-app 时,流程定义不会重新解析了。
使用交互模式的步骤:
- 如果工程未编译,先编译一下 g compile
- 不带参数运行 g,进入交互模式
- 运行 run-app,停服务器运行 stop-app,退出为 exit 或者 Ctrl+C
不过交互模式也并非完美,比如:
- 如果反复出现莫名的错误,导致运行不正常,一般可以 exit 后,重新编译一下再启动
- 内存消耗比较大,多次启停后,如果发现速度明显变慢,可以先 exit 后重新启动
- 某些 java/groovy 类无法热加载,除非 exit
此外,如果需要在应用中判断是否是通过交互模式启动的,有两种方式:
- bropen.toolkit.utils.grails.GrailsUtils.isInteractiveMode()
- "true".equals( System.getProperty("grails.interactive.mode.enabled") )