PlayFramework 如何在不重新启动和重新部署的情况下使代码更改在运行时出现? 它内部使用tomcat吗?如果没有,我能否将我的 Spring 应用程序置于它使用的服务器容器之上,并获得运行时更改的好处。
注意:我知道在技术上也可以使用 Tomcat 做到这一点,但是,根据我的经验,它有很多错误,并且不能一直工作。有时,它甚至需要重新加载整个应用程序上下文(大约 16 秒),这就离题了。
最佳答案
正如 Zenklys 指出的那样,Play 的工作原理是检查 java 文件的最后修改日期,并将它们与运行时生成的 .class 文件交叉引用。如果它识别出某些内容已更改,则会在运行时重新编译它们。
在 Play 1.x 中 - 重新编译是使用 eclipse jdt 编译器 (org.eclipse.jdt.internal.compiler.Compiler) 完成的。如果您想查看 Play 1.x 中的代码,只需查看以下类 - https://github.com/playframework/play/blob/master/framework/src/play/classloading/ApplicationCompiler.java
在 Play 2.x 中,Play 似乎是通过与 SBT 工具互连来实现的。检查一下 - https://github.com/playframework/Play20/blob/master/framework/src/play/src/main/scala/play/core/system/ApplicationProvider.scala
关于java - PlayFramework 如何使代码更改出现在运行时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10982369/