SpringBoot技术与传统开发的不同,技术现状及展望

摘要

 

长久以来javaEE繁琐的部署配置开发过程一直在被人所诟病,开发者不断简化流程:从最初只用Servlet、只用JSP、到JSP+ServLet+JavaBean、MVC、再到框架的演化,SSH、SSM开发方案,使用Maven集成框架。每一次的“升级”都会简化繁琐的过程,让开发人员更高效更专注的关心业务的核心代码。近几年,spring家族又推出了“新朋友”—SpringBoot,可以快到一键构建项目,为javaEE开发提供一站式解决方案。本文将从SpringBoot起源、现状、特性、发展几个方面来论述SpringBoot。

关键字:SpringBoot 发展历程 特点现状 趋势

 

Abstract

 

For a long time javaEE tedious deployment configuration development process has been criticized by people, developers continue to simplify the process: from the original only Servlet, only JSP, to JSP+ Servlet +JavaBean, MVC, and then to the framework evolution, SSH, SSM development program, using Maven integration framework. Each "upgrade" simplifies the tedious process and allows developers to focus on the core code of the business more efficiently and attentively. In recent years, the spring family has introduced a "new friend", SpringBoot, which allows you to build projects quickly. This article will from SpringBoot origin, present situation, characteristic, development several aspects to discuss SpringBoot.

Key words: SpringBoot  development  process  characteristics  current  trend

 

 

 

目  录

 

一、       Springboot简介... 1

(一)SpringBoot的历史... 1

(二)SpringBoot是什么?... 1

(三)为什么用SpringBoot?... 3

(四)SpringBoot应用场景... 4

二、Springboot特点... 6

(一)IDE的变化... 6

(二)项目管理工具的变化... 6

(三)服务器的变化... 6

(四)配置文件的变化... 6

(五)目录结构的变化... 6

(六)模板引擎的变化... 7

(七)数据访问的变化... 7

三、Springboot现状... 7

(一)概况... 7

(二)缺点... 8

四、Springboot发展趋势... 10

(一)去配置化... 10

(二)更好的依赖管理... 10

(三)良好的发展前景... 11

参考文献... 11

 

 

 

开源软件的发展

 

(一)SpringBoot的历史

 

2012 年 10 月,Mike Youngstrom 在 Spring jira 中创建了一个功能请求,要求在 Spring 框架中支持无容器 Web 应用程序体系结构。他谈到了在主容器引导 spring 容器内配置 Web 容器服务。这是 jira 请求的摘录:

 

我认为 Spring 的 Web 应用体系结构可以大大简化,如果它提供了从上到下利用 Spring 组件和配置模型的工具和参考体系结构。在简单的 main()方法引导的 Spring 容器内嵌入和统一这些常用Web 容器服务的配置。

 

这一要求促使了 2013 年初开始的 Spring Boot 项目的研发。2014 年 4 月,Spring Boot 1.0.0 发布。从那以后,一些 Spring Boot 版本出来了:

 

Spring boot 1.1(2014 年 6 月) - 改进的模板支持,gemfire 支持,elasticsearch 和 apache solr 的自动配置。

Spring Boot 1.2(2015 年 3 月) - 升级到 servlet 3.1 / tomcat 8 / jetty 9,spring 4.1 升级,支持 banner / jms / SpringBootApplication 注解。

Spring Boot 1.3(2016 年 12 月) - Spring 4.2 升级,新的 spring-boot-devtools,用于缓存技术(ehcache,hazelcast,redis 和 infinispan)的自动配置以及完全可执行的 jar 支持。

Spring boot 1.4(2017年1月) - spring 4.3 升级,支持 couchbase / neo4j,分析启动失败和RestTemplateBuilder。

Spring boot 1.5(2017年2月) - 支持 kafka / ldap,第三方库升级,弃用 CRaSH 支持和执行器记录器端点以动态修改应用程序日志级别。

Spring boot 2.0(2018 年 03 月)-基于 Java 8,支持 Java 9,支持 Quartz ,调度程序大大简化了安全自动配置,支持嵌入式 Netty

Spring Boot 简单性使 java 开发人员能够快速大规模地采用该项目。Spring Boot 可以说是在 Java 中开发基于 REST 的微服务 Web 应用程序的最快方法之一。

https://www.jianshu.com/p/039fdb162a98   SpringBoot的历史

(二)SpringBoot是什么?

Spring Boot是由Pivotal团队提供的全新框架,相当于Spring技术栈的大整合,其设计目的是用来简化Spring应用的创建、运行、调试、部署等。使用Spring Boot可以做到专注于Spring应用的开发,而无需过多关注XML的配置。Spring Boot使用“习惯优于配置”的理念,简单来说,它提供了一堆依赖打包,并已经按照使用习惯解决了依赖问题。

Spring Boot是开发者和Spring 本身框架的中间层,帮助开发者统筹管理应用的配置,提供基于实际开发中常见配置的默认处理(即习惯优于配置),简化应用的开发,简化应用的运维;总的来说,其目的Spring Boot就是为了对Java web 的开发进行“简化”和加“快”速度,简化开发过程中引入或启动相关Spring 功能的配置。这样带来的好处就是降低开发人员对于框架的关注点,可以把更多的精力放在自己的业务代码上。

 

同时随着微服务概念的推广和实践,Spring Boot的精简理念又使其成为Java微服务开发的不二之选,也可以说,Spring Boot其实就是为了微服务而生的Java web框架。

 

先如今,Spring Boot已经在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

原文:https://blog.csdn.net/qq_41387882/article/details/79945170

 

 

(三)为什么用SpringBoot?

 

图1

Build Antthing!Spring的官方口气很大,SpringBoot can build anything、quick start。

Spring Boot的设计目的是让您尽可能快地启动和运行,并尽可能少地预先配置Spring。Spring Boot对构建可用于生产的应用程序总是准备好了默认配置(优先级低于自定义配置)。

1) Spring Boot使编码变简单

spring boot采用java config的方式,对spring进行配置,并且提供了大量的注解,极大地提高了工作效率。

2) Spring Boot使配置变简单

spring boot提供许多默认配置,当然也提供自定义配置。但是所有spring boot的项目都只有一个配置文件:application.properties/application.yml。用了spring boot,再也不用担心配置出错找不到问题所在了。

3) Spring Boot使部署变简单

spring boot内置了三种servlet容器:tomcat,jetty,undertow。

 

 

所以,你只需要一个java的运行环境就可以跑spring boot的项目了。spring boot的项目可以打成一个jar包,然后通过java -jar xxx.jar来运行。(spring boot项目的入口是一个main方法,运行该方法即可。 )

4) Spring Boot使监控变简单

spring boot提供了actuator包,可以使用它来对你的应用进行监控。

 

(四)SpringBoot应用场景

1) Spring家族框架的项目

Springboot也是spring家族的一员,是spring技术栈的整合,spring相关框架的项目都可以使用springboot重构。

2) JavaEE应用

Springboot是JavaEe开发的颠覆者,你会发现在Springboot中无论是目录结构,还是配置文件,服务器等与以前都有较大的不同。

 

3) 微服务

微服务在2014年由martin fowler提出,顾名思义微服务就是服务微化,是一种架构风格。一个应用应该是由一组小型服务组成;可以通过HTTP的方式进行互通;

微服务:每一个功能元素最终都是一个可独立替换和独立升级的软件单元;可以被独立部署;各个模块之间是松耦合的;每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。

 

 

图2

https://martinfowler.com/articles/microservices.html#MicroservicesAndSoa

在服务器部署上,可以像拼积木一样,任意组合模块,充分发挥性能提高效率。

SpringBoot将一些第三方的框架整合得很好,开发人员只需要导入对应的jar包,再做一些简单的配置和声明,便可实现框架的集成,完成项目工程的搭建,我觉得这也是SpringBoot适合做微服务框架表现得最直接的一点了吧。

二、Springboot特点

(一)IDE的变化

大多数人习惯使用Eclipse、MyEclipse进行Java开发,Springboot的兴起是压垮传统开发工具的最后一根稻草。SpringBoot官方推荐使用Spring Tool Suite(相当于Eclipse+SpringBoot插件),但我心目中最好的IDE却是IDEA。

IDEA由素以严谨著称的东欧程序员开发,智能代码助手、代码自动提示、重构等等功能都会让你心旷神怡,更为可贵的是IDEA自带Spring Initializr,无需再考虑导入依赖,你只需要选择一下SpringBoot的主版本,填写项目名,选择需要引入的模块,点击“OK”,它就会帮你做好这些繁琐的准备工作了。

(二)项目管理工具的变化

在SpringBoot中,Maven仍然是足够好的项目管理工具,但Springboot却不局限于Maven。

Gradle(大象)是我们的新朋友。相比于Maven,它的依赖引用更为简洁,依赖范围Scope由6种简化为4种,支持动态版本依赖,便于解决冲突等等。

(三)服务器的变化

Springboot解决了让所有开发人员都头疼的问题:难以忍受的启动速度。传统的SSM框架项目通常需要几十秒的启动时间,频繁的修改部署极其浪费时间。在使用Maven配合嵌入式的服务器后,通常可以有效的优化,十几秒即可,而在Springboot中,不到十秒的时间就可以启动。

Springboot嵌入了Tomcat、Jetty等服务器,开发人员不仅有丰富的选择,而且无需再把项目打包成war文件,打包成jar文件即可。

 

(四)配置文件的变化

Spring官方推荐使用新的YAML配置文件来取代XML配置文件。SpringBoot使用一个全局的配置文件,配置文件名是固定的:application.properties、application.yml(yml的配置文件更为直观),全局配置文件可以修改默认配置。

YAML:以数据为中心,更加直观,比json、xml等更适合做配置文件;在新的配置文件中,摒弃了繁琐的双标签,以缩进为灵魂,这一点和python很像。

 

(五)目录结构的变化

传统的JavaEE项目默认把代码放到src/main下,把html、jsp以及静态资源文件存放到WebContent/WebRoot目录下。SpringBoot规定把代码存放到src/main/java目录下,把静态资源文件存放到src/main/resources/static下,把html等页面存放到src/main/resources/templates下。

 

(六)模板引擎的变化

传统JavaEE的王牌搭档JSP模板引擎在springboot中开始失宠。boot不推荐JSP,因为迷你的嵌入式tomcat等服务器并不能很好的支持JSP。官方推荐使用Thymeleaf模板引擎,只要我们把HTML页面放在classpath:/templates/,thymeleaf就能自动渲染;相比JSP,ThymeLeaf的语法更加的简洁,当然开始你可能会有些不适应。

 

(七)数据访问的变化

在JavaEE中,我们常用的数据访问方式有JDBC、MyBatis、hibernate等。在SpringBoot中还支持JPA(SpringData JPA规范)。整合JPA需要在与数据库表对应的实体类中注解配置映射关系。

 

 

 

三、Springboot现状

 

(一)概况

随着Python等语言的流行,Java开发显得格外笨重:繁多的配置,低下的开发效率,复杂的部署流程都让开发者头痛。在这样的环境下,Springboot应运而生,它使用”习惯由于配置”(项目中存在大量的配置,此外还内置一个习惯性的配置,让你无须进行手动配置)的理念让你的项目快速运行起来。使用Spring Boot很容易创建一个独立运行(运行jar,内嵌Servlet容器),准生产级别的Spring框架的项目,使用Spring Boot你可以不用或者只需要很少的Spring配置。 相比于以往的一些开发框架,Spring Boot不但使用更加简单,而且功能更加丰富,性能更加稳定而健壮。使用Spring Boot开发框架,不仅能提高开发速度,增强生产效率,一定意义上,可以说是解放了程序员的劳动,一种新技术的使用,更能增强系统的稳定性和扩展系统的性能指标。

    Spring Boot是在Spring框架基础上创建的一个全新的框架,相当于Spring技术栈的一个大整合。其设计目的是简化Spring应用的搭建和开发过程,它不但具有Spring的所有优秀特性,而且具有如下显著特点:

        ·为Spring开发提供更加简单的使用和快速开发的技巧。

        ·具有开箱即用的默认配置功能,能根据项目依赖自动配置。

        ·具有功能更加强大的服务体系,包括嵌入式服务、安全、性能指标、健康检查等。

        ·绝对没有代码生成,不再需要XML配置(用大量的注解来代替),即可让应用更加轻巧和灵活。

 

SpringBoot目前来说还不是主流,很多企业的项目还是在用老框架,一方面因为重构很麻烦,另一方面成本也不合算。Spring boot 是 Spring 的一套快速配置脚手架,可以基于spring boot 快速开发单个微服务,Spring Boot,看名字就知道是Spring的引导,就是用于启动Spring的,使得Spring的学习和使用变得快速无痛。不仅适合替换原有的工程结构,更适合微服务开发。

 

(二)缺点

1) 学习资源少

Springboot是spring公司近几年伴随Spring4推出的新框架,资料相当有限,很多问题都无法在网上找到答案。而且有很大一部分是英文资料,这对英语不好的开发人员无疑是雪上加霜。

2) 学习难度大

Springboot是 Spring 的一套快速配置脚手架,着眼于整个JavaEE开发,看名字就知道是Spring的引导,就是用于启动Spring的,使得Spring的学习和使用变得快速。Springboot在底层大量封装了spirng的API。你可能3天就能学会使用它,但是你花30天也不一定能够了解它。想要学好springboot,真正理解这个框架,不仅要了解Spring、SpringMVC、SpringData、Mybatis等框架,还要了解SQL、NOSQL、Maven,以及如日中天的Gradle等等。

3) 版本控制还不够成熟

 

图3

如图所示,你只需要勾选springboot的主版本号,它就会为你自动选择相关引用依赖的适应版本。但这并不是绝对的,有很多依赖包,如:mybatis、Shiro、thymeleaf等并不是spring公司的,而且在高速的版本迭代中,来不及更新。这就会导致冲突或者不配套,使项目无法运行起来,通常在网上也不易找到,只能自己手动更换版本调试。还有就是springboot目前无法有效的排除重复依赖。比如springboot整合mybatis依赖,引用了JDBC依赖,开发者在不清楚的情况下,又手动引入了JDBC依赖,此时依赖重复,springboot无法检查出来,需要手动排除。

 

4) 尚未趋于稳定

Springboot是 一个充满活力的框架,从13年v0.5.0.M1版本发布,保持半年一次的大更新,到现在:

图4

https://spring.io/projects/spring-boot#learn

SpringBoot还很年轻,这也导致了版本不够稳定,今天用的注解,可能在下一版本使用就完全消失或者更改了名字。尤其是SpringBoot 1和2还是有很大不同的,这也让开发者比较头痛。

四、Springboot发展趋势

(一)去配置化

SpringBoot下定决心去除繁琐的xml配置,无论是web.xml、持久层还是spring配置都已经消失。甚至连Maven的pom都将要被Gradle取代。所以说,去配置化或者是让配置变的更少仍是SpringBoot的发展方向。

 

(二)更好的依赖管理

Springboot的各方面都让人赞不绝口,无论是持久层还是表现层,官方都提供了丰富的解决方案,使你不必拘泥于一种。相比之下,依赖管理还不够完善,springboot一定会在将来提出更好的解决方案。

 

 

(三)良好的发展前景

使用Java做Web应用开发已经有近20年的历史了,也演化出了非常成熟的生态系统,目前活跃度仍然非常高。随着Python等语言的流行,Java开发显得格外笨重:繁多的配置,低下的开发效率,复杂的部署流程都让开发人员头疼。Springboot的到来在一定程度上解决了上述问题,把开发人员从繁琐的配置中解放出来,能更好的投入到核心编码中。

微服务是未来发展的趋势,项目会从传统架构慢慢转向微服务架构,因为微服务可以使不同的团队专注于更小范围的工作职责、使用独立的技术、更安全更频繁地部署。而SpringBoot继承了 Spring 的优良特性,也是官方大力推荐的技术,可以看出,Spring Boot 是未来发展的一个大趋势。

SpringBoot can build anything这句话并不只是说说而已。SpringBoot在Spring家族中,可以说是一个上有老下有小的中坚力量。无论是SpringCloud、SpringData、还是SpringSecurity都可以与其无缝连接。随着云计算时代的来临,在阿里放弃Dubbo后,SpringCloud无疑是最好的选择,而Springcloud无法离开SpringBoot。下一个五年内,SpringBoot必将成为主流,高速发展。

 

 

 

  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值