支持在运行中的 JVM 中重新加载类的 Java 代理
Spring Loaded 是一个 JVM 代理,用于在 JVM 运行期间重新加载类文件变更。它在加载时对类进行转换,使其便于后续重新加载。与“热代码替换”不同,后者仅允许在 JVM 运行后执行简单更改(例如方法体的更改),Spring Loaded 允许你添加/修改/删除方法、字段、构造器。类型、方法、字段、构造器上的注解也可以被修改,并且可以在枚举类型中添加/删除/更改值。
Spring Loaded 可用于任何可在 JVM 上运行的字节码,并且实际上是 Grails 2、3、4(在 Java 8 上)所使用的重新加载系统。
1.3.0 现已发布!
1.3.0 支持在 Java 8 上运行的 Grails 4.0.4+(Java 11 尚不支持,正在开发中)
1.2.6 快照位于此仓库区域(获取最近构建的 .jar): repo.spring.io
下载的是代理 jar,使用前无需进一步解压。
java -javaagent:<pathTo>/springloaded-{VERSION}.jar -noverify SomeJavaClass验证器正在被关闭,因为某些字节码重写超出了其原本的含义。 一些字节码——以JVM不介意但验证器不喜欢的方式。一旦启动并运行 实际上,运行时发生的情况是,任何从 jar 文件(依赖项)加载的类都不会被 被视为可重新加载的,而任何从磁盘上的 .class 文件加载的内容则被设为可重新加载。一旦 已加载的 .class 文件将被监视(每秒一次),如果出现新版本, SpringLoaded 会检测到它。该类的任何实时实例都会立即看到新形式。 对于该对象,实例无需被丢弃并重新创建。
毫无疑问,这引起了很多问题,希望不久将会出现一个合适的常见问题解答!但在此期间,以下是一些基本的问题和答案:
暂无开放 Issues,或尚未同步最近议题。