前言迪士尼相信大家都不陌生。1964年的纽约世界博览会上,华特迪士尼向世界推出了三件开创性的作品:《It'sasmallworld》和《withLincoln》(林肯先生的伟大时刻)和《CarouselofProgress》。现在你还能看到它们今天。其中,我最喜欢的是《文明进化的旋转木马》,这也是沃尔特迪斯尼的最爱之一。在每一幕中,父亲(也是节目的解说员)都用“它可以”这句话来讲述最新的发明。tgetbetter”才发现,随着科技的进步,它确实越来越好。它满足了人们对新奇和刺激的不断追求。园内不断建设的游乐设施富有新意,不仅满足了孩子们对创新的渴望。Spring比较短小,但是我对Spring的感觉就像是20世纪的“进步爸爸”(ProgressDad),似乎每一个Spring应用都让开发者的生活更上一层楼,单从Spring的方式组件被声明和编织。让我们看一下Spring历史上的一些演变。Spring1.0的出现彻底改变了我们开发企业级Java应用的方式。Spring的依赖注入和声明式事务意味着组件之间没有紧耦合,不需要重量级的EJB。这件事再好不过了。从Spring2.0开始,我们可以在配置中使用自定义的XML命名空间,更小、更简单、更易于理解的配置文件使Spring本身更易于使用。这件事再好不过了。Spring2.5让我们拥有了更加优雅的面向注解的依赖注入模型(即@Component和@Autowired注解),以及面向注解的SpringMVC编程模型。不再需要显式声明应用程序组件,也不需要扩展控制器基类。这件事再好不过了。到Spring3.0时,我们有了一个新的基于Java的配置,可以替代XML。在Spring3.1中,一系列以@Enable开头的注解进一步完善了这个特性。终于,我们第一次可以在没有任何XML配置的情况下编写Spring应用程序。这件事再好不过了。Spring4.0提供了对条件配置的支持。基于应用程序的类路径、环境和其他因素,运行时决策将决定使用哪些配置以及忽略哪些配置。这些决定不需要在构建时编写脚本;以前选择的配置被放置在已部署的包中的情况已不再如此。这件事再好不过了。尽管如此,我们还是没能逃脱配置的魔爪。当启用某些Spring功能时,例如事务管理和SpringMVC,仍然需要在XML或Java中进行显式配置。启用第三方库时也需要显式配置。例如,配置Servlets和过滤器(如Spring的DispatcherServlet)也需要在web.xml或Servlet初始化代码中显式配置。组件扫描减少了配置量,Java配置让它看起来简单了很多,但是Spring还是需要很多配置。所有这些配置都代表了开发时的损耗。因为需要在思考Spring特性配置和解决业务问题之间进行思维切换,写配置挤占了写应用逻辑的时间。与所有框架一样,Spring很有用,但同时它也需要一些回报。另外,项目依赖管理也是吃力不讨好的活。决定在一个项目中使用哪些库已经够头疼的了,但是知道那些库的哪些版本不与其他库冲突是一个难题。而且,依赖管理也是一种损失,添加依赖不是写应用代码。一旦选择了错误的依赖版本,随之而来的不兼容问题无疑会成为生产力杀手。现在轮到SpringBoot了。虽然Spring的每个版本都让我们觉得没有比这更好的了,但SpringBoot向我们证明了Spring仍然具有巨大的潜力。事实上,我认为SpringBoot是很长一段时间以来Java开发中最有意义和最令人兴奋的事情。SpringBoot让这一切成为过去。基本特性SpringBoot为Spring应用程序的开发带来了很多魔力,其中最重要的是以下四个核心。自动配置:对于Spring应用的很多常用应用功能,SpringBoot都可以自动提供相关配置。启动依赖:告诉SpringBoot需要什么功能,它可以引入需要的库。命令行界面:这是SpringBoot的一个可选特性,您只需编写代码即可完成一个完整的应用程序,而无需传统的项目构建。执行器:允许您深入了解正在运行的SpringBoot应用程序以进行查找。SpringBoot之所以是Spring,是因为SpringBoot实在是太神奇了,所以在过去的一年多时间里,出现了很多与之相关的言论。首先,SpringBoot不是应用服务器。这种误解是这样产生的:SpringBoot可以把一个Web应用程序变成一个自执行的JAR文件,可以在命令行上运行,而不用部署到传统的Java应用服务器上。SpringBoot通过在应用程序中嵌入一个Servlet容器(Tomcat、Jetty或Undertow)来实现这一点。但这是嵌入式Servlet容器提供的功能,并不是SpringBoot实现的。同样,SpringBoot也没有实现JPA或JMS(JavaMessageService,Java消息服务)等企业级Java规范。它确实支持许多企业级Java规范,但它需要在Spring中自动配置支持这些功能的bean。例如,SpringBoot不实现JPA,但它会自动配置一个JPA实现(如Hibernate)的beans以支持JPA。最后,SpringBoot没有引入任何形式的代码生成,而是利用Spring4的条件配置特性,以及Maven和Gradle提供的传递依赖分析,实现了Spring应用上下文中的自动配置。简而言之,SpringBoot本质上是Spring,它会执行没有它就可以完成的Springbean配置。您不再需要编写这些样板配置,而可以专注于应用程序的逻辑,这就是应用程序的独特之处。初始化SpringBoot项目一开始是很困难的。您需要建立一个目录结构来存放各种项目内容,创建构建文件,并向其添加各种依赖项。下面看一下初始化的几种用法:通过web界面使用。这个是最直接的方法,就是用浏览器打开http://start.spring.io,你要用Maven还是Gradle来构建项目,用哪个版本的SpringBoot。该程序默认生成Maven项目并使用最新版本的SpringBoot(非里程碑和快照版本),但您可以自由选择其他选项。通过Spring工具套件使用。长期以来,SpringToolSuite①一直是开发Spring应用的最佳选择。从3.4.0版本开始,它已经与SpringInitializr集成,这使得它成为SpringBoot入门的好方法。要在SpringToolSuite中创建一个新的SpringBoot应用程序,在File菜单中选择New>SpringStarterProject菜单项,然后按照对话框提示进行初始化。由IntelliJIDEA使用。IntelliJIDEA是非常流行的IDE,IntelliJIDEA14.1已经支持SpringBoot!要在IntelliJIDEA中创建新的SpringBoot应用程序,请从“文件”菜单中选择“新建”>“项目”。按照对话框提示进行初始化。使用SpringBootCLI。如果你只想通过编写代码来完成Spring应用的开发,那么SpringBootCLI是一个不错的选择。然而,SpringBootCLI的功能不仅限于此,它还有一些命令可以帮助您使用Initializr开始开发更传统的Java项目。本文仅简单介绍几种初始化方法,具体操作步骤后面会单独讲解。总结纵观Spring十余年的发展,它一直受到Java开发者的追捧,因为它根据技术的发展不断完善和完善,并坚持初衷:简化企业级Java开发。SpringBoot提供了一种令人兴奋的新方法来开发Spring应用程序,而框架本身的摩擦很小。SpringBoot从无数知名企业的实践中吸取经验,总结并实现到框架中。如果说SpringFramework的目标是帮助开发者写出好的系统,那么SpringBoot的目标就是帮助开发者用更少的代码更快地写出好的生产系统。好了,下面就来和Spring的plus版本——SpringBoot一起探索和交流吧!最后一篇为初学者提供学习指南,对从业者有参考价值。我坚信编码员也有能力产生洞察力。扫描下方二维码关注、学习、交流!
