我有一个通过 grails 交互模式运行的 grails 应用程序。此应用程序包含服务、tagLibs、gsps 等,但最重要的是它包含 src/groovy 文件夹中的 groovy 文件。
其中一个 groovy 文件称为AppConstants.groovy并包含大量静态变量,即
public static final String VARIABLE1 = "VARIABLE VALUE"
在非交互模式下运行它时,我没有遇到任何问题,对此变量所做的任何更新都会在下次部署时反映在正在运行的应用程序中。然而,在交互模式下,对变量所做的任何更改VARIABLE1
都不会反映在应用程序中,即使您调用exit
和 也是如此run-app
。要反映更改 必须退出并重新启动交互模式。
起初我认为这可能是一个缓存问题,并且我的静态最终变量正在被缓存,并且由于 JVM 没有重新启动,所以这个缓存永远不会被更新。然而,我注意到添加一个新变量,一个以前从未存在于应用程序中的变量,在重新启动交互模式之前对我的应用程序的其余部分不可用。
任何想法这背后的原因是什么?该类正在编译,因为我可以在交互式控制台中看到这一点,因此人们希望任何更改都会反映在应用程序中,不一定是在它运行时,但至少exit
后跟一个run-app
.
额外信息:Grails 2.1.0 版