我正在寻找 Java 运行时中 ShutdownHook 的一般反向等效项,即类似于StartupHook的东西,在 JVM 首次启动时可以执行某些自定义预热或设置代码。
我知道在启动 Servlet 容器时使用 ServletContexts 等替代方案,或者在 Spring 等其他框架中使用类似的功能。但这些不是我想要的。我正在寻找一个通用的 JVM 解决方案,如果有的话。
请让我知道 StartupHook 的整个想法是否不适合 JVM 以及为什么。
更新:在浏览完所有提供的答案(谢谢大家)之后,似乎最接近我正在寻找的是 Java 代理。
虽然如果JVM允许我做这样的事情会很好(从易用的角度来看,但可能不是从安全的角度来看):
- 编写一个只用一种方法实现 StartUpHook 的类 - void preMain()
- 将该类放入 jar 文件并将该 jar 放入类路径或 JRE 扩展目录
- 当 JVM 启动时,它会在类路径中查找所有实现 StartUpHook 的类,然后调用它的 preMain() 方法。