2015-11-19 24 views

回答

8

这是一个广泛的问题。答案取决于你的要求。个人而言,我更喜欢今天使用Spring Boot的独立应用程序。一个应用程序,一个JVM。它为您提供了部署和运行时行为方面的更多灵活性和可靠性。 Spring Boot 1.3.0.RELEASE附带init scripts,它允许您在Linux服务器上将您的Spring Boot应用程序作为守护程序运行。例如,您可以将rpm-maven-plugin集成到您的构建管道中,以便将应用程序打包并发布为部署的RPM,或者您可以轻松地应用您的应用程序。

通过经典的部署到像Tomcat这样的servlet容器中,重新部署后会面临各种内存泄漏,例如日志框架,管理不当的线程本地对象JDBC drivers等等。 您可以花时间修复您所使用的应用程序和框架中的所有内存泄漏,也可以在部署后重新启动servlet容器。将应用程序作为独立版本运行,您不必关心这些内存泄漏,因为您需要重新启动才能为您提供新版本。

过去,几个webapps在一个servlet容器中运行。这可能会导致所有webapps的性能下降,因为每个webapp都有自己的内存,cpu和GC特性,这些特性可能会相互干扰。此外,像线程池这样的资源在所有的webapps之间共享。

实际上,由于服务器负载较高,独立应用程序不会因性能下降而受到影响,但它在内存利用率或GC方面不会影响其他应用程序。请记住,如果您只关注一个应用程序的特性,则性能或GC调优将更加简单。一旦你需要在一个servlet容器中找到几个webapps的共同点,它就变得复杂了。

最后,您的决定可能取决于您的工作环境。如果你正在一家软件公司运行和维护运营的公司建立一个应用程序,那么你很可能被迫构建一场战争。如果您可以自由选择部署目标,那么我推荐一个独立的应用程序。


为了从生产中删除devtools建立

您可以使用设置excludeDevtools建立财产完全 删除JAR。 Maven和 Gradle插件均支持该属性。

查看Spring Boot documentation

+0

明白了,谢谢! – zhuguowei

相关问题