一直在浏览 12 因素应用程序清单,在下面的"依赖项"部分下提到。
十二因素应用从不依赖于系统范围包的隐式存在。它通过依赖项声明清单完整而准确地声明所有依赖项。此外,它在执行期间使用依赖隔离工具,以确保没有隐式依赖从周围系统"泄漏"。完整和显式的依赖规范统一应用于生产和开发。
在 Spring 启动应用程序的上下文中,以下是我的理解。
- 使用任何构建工具(如 maven/gradle(
- 在 pom.xml 或 build.gradle 中声明所有依赖项。
这是正确的理解吗?我无法从周围系统中理解"泄漏"的部分。
这是否意味着 JVM 也应该在应用程序中?
我不是SpringBoot的人。
想象一下,一个 SpringBoot 应用程序需要n个环境变量,您的应用程序已经设置了p个变量。12 因素应用程序不应假定已在操作系统中设置了剩余的n-p环境变量。事实上,如果它们是在操作系统级别设置的,那么这些环境变量就会泄漏到您的应用程序中,这可能会产生意外的结果。例如,堆内存在操作系统级别设置为对应用程序不"正确"的值。因此,应用程序不是在操作系统级别假定堆内存的"慷慨"设置,而是显式设置它。
恕我直言,这是一个很好的考虑因素。