有人说,SpringBoot的出现,为Java迎来了又一个春天。它是对Java应用开发的颠覆,彻底改变了Java应用开发的模式。以前我们在做Spring应用开发的时候,需要知道配置哪些类可以让Hibernate和Spring协同工作,需要知道如何配置视图解析器来控制在视图层显示哪个模板。我经常写了很多代码,发现我只是在处理Spring框架本身的配置,而没有写一行业务逻辑。开发完成后,我们还需要考虑部署的问题,别说是部署到非常重的应用服务器,比如WebSphere、Weblogic或者JBoss,就是部署到轻量级的容器,比如Tomcat或者Jetty,我们也需要知道如何配置容器,如何修改配置文件等等。并且当多个应用程序部署到同一个Tomcat时,经常会发生冲突。即使我们花很大的力气去解决这些问题,在程序部署成功后,我们也很难了解程序的运行状况。有可能我们需要配置很多第三方工具,才能知道应用运行的怎么样,有哪些参数,有哪些环境变量。虽然Spring帮我们解决了依赖注入的问题,简化了一些MVC流程,但是Spring框架本身集成的东西越来越多,配置起来也越来越难,维护成本呈线性上升。很多时候,Python、Ruby或者JavaScript程序员敲几条命令安装一些库,然后简单地敲几行代码引入一些框架比如flask,然后用一个简单的API直接运行。Java程序员可能还在研究使用Maven中的哪个库以及如何在代码中进行配置。但是现在SpringBoot的出现大大改善了这种情况。它使用“习惯胜于配置”的理念(项目中有大量的配置,也有内置的自定义配置让你不需要手动配置)让你的项目奔驰。使用SpringBoot很容易创建一个单机(运行jar,嵌入Servlet容器),准生产级的基于Spring框架的项目。使用SpringBoot,您不需要或需要很少的Spring配置。【SpringBoot核心功能】独立运行Spring项目SpringBoot可以以jar包的形式独立运行。运行一个SpringBoot项目,只需要通过java–jarxx.jar来运行即可。内嵌Servlet容器SpringBoot可以选择内嵌Tomcat、Jetty或Undertow,这样我们就不需要以war包的形式部署项目。提供starter简化Maven配置Spring提供了一系列starterpom来简化Maven的依赖加载。比如当你使用spring-boot-starter-web时,它会自动添加如下图所示的依赖包。自动配置SpringSpringBoot会根据类路径中的jar包和类自动为jar包中的类配置bean,这样会大大减少我们需要使用的配置。当然,SpringBoot只考虑了大部分的开发场景,并不是所有的场景。如果我们在实际开发中需要自动配置bean,而SpringBoot不提供支持,可以自定义自动配置。准生产应用监控SpringBoot提供基于http、ssh、telnet的运行时项目监控。无代码生成和xml配置SpringBoot的神奇之处不是通过代码生成的方式实现的,而是通过条件注解实现的,这是Spring4.x提供的新特性。Spring4.x提倡Java配置和注解配置相结合,而SpringBoot无需任何xml配置即可实现Spring的所有配置。SpringBoot不仅让我们的Java开发变得简单有效,更重要的是,SpringBoot彻底颠覆了我们对Java开发的认知,让我们第一次有“原来Java开发也可以这样”的感觉。
