有人说,Spring Boot的出现,让Java迎来了又一春,它是Java应用开发的颠覆者,彻底改变了Java应用开发的模式。
以往我们做Spring应用开发,要知道配置哪些类来让Hibernate和Spring一起工作,要知道如何配置view resolver来控制哪个模版进行视图层的展示。经常写了一大堆代码之后发现只是在处理Spring框架本身的配置,根本一行业务逻辑都没有写。
开发完成之后,我们还要考虑部署的问题,且不说部署到非常笨重的应用服务器,比如WebSphere, Weblogic或者JBoss,即使部署到Tomcat或者Jetty这种轻量级容器上面,我们要知道如何配置容器,如何修改配置文件等等。而且在多应用部署到同一个Tomcat的时候,经常会出现冲突。就算我们花了很大力气解决了这些问题,程序部署成功之后,我们很难去了解这个程序的运行状态。有可能我们要配置很多第三方工具来去知道这个应用程序运行状态如何,有哪些参数,环境变量是什么。尽管Spring帮我们解决了依赖注入的问题,简化了一些MVC的流程,但是Spring框架本身集成了越来越多东西,导致其越来越难配置,维护成本成直线上升。
很多时候,Python, Ruby或者JavaScript程序员敲几个命令安装一些库,然后简单的敲几行代码,引入一些框架比如flask,然后直接一个简单的API就可以跑起来了。Java程序员可能还在研究该使用Maven里面的哪个库,如何在代码里面进行配置。
它使用“习惯优于配置”(项目中存在大量的配置,此外还内置一个习惯性的配置,让你无须手动进行配置)的理念让你的项目快速运行起来。使用Spring Boot 很容易创建一个独立运行(运行jar,内嵌Servlet 容器)、准生产级别的基于Spring框架的项目,使用Spring Boot 你可以不用或者只需要很少的Spring 配置。
Spring Boot 可以以jar 包的形式独立运行,运行一个Spring Boot 项目只需通过java –jarxx.jar 来运行。
Spring Boot 可选择内嵌Tomcat、Jetty 或者Undertow ,这样我们无须以war 包形式部署项目。
Spring 提供了一系列的starter pom 来简化Maven 的依赖加载,例如,当你使用了spring-boot-starter-web 时,会自动加入如下图所示的依赖包。
Spring Boot 会根据在类路径中的jar 包、类,为jar 包里的类自动配置Bean,这样会极大地减少我们要使用的配置。当然,Spring Boot 只是考虑了大多数的开发场景,并不是所有的场景,若在实际开发中我们需要自动配置Bean,而Spring Boot 没有提供支持,则可以自定义自动配置。
Spring Boot 提供基于http、ssh、telnet 对运行时的项目进行监控。
Spring Boot 的神奇的不是借助于代码生成来实现的,而是通过条件注解来实现的,这是Spring 4.x 提供的新特性。
Spring 4.x 提倡使用Java 配置和注解配置组合,而Spring Boot 不需要任何xml 配置即可实现Spring 的所有配置。
SpringBoot 不仅让我们做Java开发变的简单有效,更重要的是SpringBoot彻底颠覆了我们对Java开发的认识,让我们第一次有了”原来Java开发可以这么做” 的感觉。