0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SpringBoot将推翻以往的Java应用开发

电子工程师 来源:网络整理 作者:工程师3 2018-05-27 08:27 次阅读

使用Java做Web应用开发已经有近20年的历史了,从最初的Servlet1.0一步步演化到现在如此多的框架,库以及整个生态系统。经过这么长时间的发展,Java作为一个成熟的语言,也演化出了非常成熟的生态系统,这也是许多公司采用Java作为主流的语言进行服务器端开发的原因,也是为什么Java一直保持着非常活跃的用户群。

Java开发概述:

使用Java做Web应用开发已经有近20年的历史了,从最初的Servlet1.0一步步演化到现在如此多的框架,库以及整个生态系统。经过这么长时间的发展,Java作为一个成熟的语言,也演化出了非常成熟的生态系统,这也是许多公司采用Java作为主流的语言进行服务器端开发的原因,也是为什么Java一直保持着非常活跃的用户群。然而这个生态系统纷繁复杂,一个非常简单的Java Web应用程序都有可能应用到以下技术:

Java开发分为两个阵营,一个是由Oracle 为代表的Java EE阵营,这是Web开发的官方参考标准。其中核心技术主要有Servlet, EJB, JMS, JSF, JDBC/JPA, JAXB, JAX-WS等。另一个阵营则是由开源社区以及Pivotal代表的Spring阵营,其中核心技术主要有 Spring Framework, Spring MVC, Spring Data, Spring Security等等。

Spring从最开始作为依赖注入的Bean container,逐渐发展为Java应用开发的主流框架。Java EE因为其臃肿,复杂,难以使用的结构,被很多Java程序员抛弃。从Java EE6开始才引入了CDI (Context Dependency Injection),而且Java EE 的设计思想非常学术化, Gavin King等人脱离了工业界的需求,使得Java EE开发非常复杂。JSF甚至为Java之父James Gosling诟病。相反在Spring社区,越来越多现代化的应用开发方法被融入进来,形成不同的Spring项目。

什么是Spring Boot?

Spring Boot便是一个社区反馈推动的项目。 Spring Boot可以说是至少近5年来Spring乃至整个Java社区最有影响力的项目之一。Spring Boot主要包含以下特性:

1.直接嵌入Tomcat, Jetty或者Undertow作为Servlet container。从此之后再也不用将应用程序打包成war然后上传到application server里面了。

2.提供了starter POM, 能够非常方便的进行包管理, 很大程度上减少了jar hell或者dependency hell

3.自动进行Spring框架的配置,节省程序员大量的时间和精力,能够让程序员专注在业务逻辑代码的编写上

4.不需要任何第三方系统, Spring Boot自带了可以用于生产环境的程序状态信息和健康状态。同时可以让应用程序非常方便的读取外部的配置信息

5.完全不需要任何代码的自动生成。更不需要用xml来进行框架的配置

为什么Spring Boot是颠覆性的?

为什么说Spring Boot是颠覆性的呢?因为它彻底改变了Java应用开发的模式。以往我们做Spring应用开发,要知道配置哪些类来让Hibernate和Spring一起工作,要知道如何配置view resolver来控制哪个模版进行视图层的展示。经常写了一大堆代码之后发现只是在处理Spring框架本身的配置,根本一行业务逻辑都没有写。开发完成之后,我们还要考虑部署的问题,且不说部署到非常笨重的应用服务器,比如WebSphere, Weblogic或者JBoss,即使部署到Tomcat或者Jetty这种轻量级容器上面,我们要知道如何配置容器,如何修改配置文件等等。而且在多应用部署到同一个Tomcat的时候,经常会出现冲突。就算我们花了很大力气解决了这些问题,程序部署成功之后,我们很难去了解这个程序的运行状态。有可能我们要配置很多第三方工具来去知道这个应用程序运行状态如何,有哪些参数,环境变量是什么。尽管Spring帮我们解决了依赖注入的问题,简化了一些MVC的流程,但是Spring框架本身集成了越来越多东西,导致其越来越难配置,维护成本成直线上升。很多时候Java程序员们看到Python, Ruby或者JavaScript程序员敲几个命令安装一些库,然后简单的敲几行代码,引入一些框架比如flask,然后直接一个简单的API就可以跑起来了。这时候Java程序员可能还在研究该使用Maven里面的哪个库,如何在代码里面进行配置呢。大家心里的表情肯定是这样:

(求此时Java程序员心理阴影面积)

Java程序员扬眉吐气的时候到了!

传统Spring开发对决Spring Boot应用开发

接下来我会通过具体例子对比传统的Spring应用开发和Spring Boot应用开发。假如我们开发一个Hello World的REST API,传统的Spring开发应该这么做。

1. 如果使用Maven进行包管理,编写pom.xml 如下

SpringBoot将推翻以往的Java应用开发

SpringBoot将推翻以往的Java应用开发

如上可以看到为了编写简单的hello world REST API我们引入了Spring Core, Spring Web, Spring Web MVC, Java Servlet and Jackson这么多包依赖。可以想象复杂一点的程序这个pom会变成什么样。。。

2. 编写HelloWorldInitializer class如下

SpringBoot将推翻以往的Java应用开发

这个已经是非常简单的Java Config了,在Servlet 3.0之前用XML配置Spring的小伙伴们现在估计已经崩溃。

3. 编写HelloWorldConfiguration class

SpringBoot将推翻以往的Java应用开发

注意到我们这个类里面一行业务逻辑都没有哦。。。

4. 真正开始编写HelloWorldRestController

SpringBoot将推翻以往的Java应用开发

5. 下载Tomcat

6. 打包部署到Tomcat上

7.访问localhost:8080/HelloWorld, 你终于看到了Hello World…

写到这里我已经累觉不爱了。。。

接下来Java老司机会带领你们感受一下Spring Boot的魅力:

1. 编写pom.xml

SpringBoot将推翻以往的Java应用开发

SpringBoot将推翻以往的Java应用开发

注意到我们只引入了一个包依赖,并且版本什么的就随他去吧

2. 编写main 函数

我们在这里标记HelloWorldDemoApplication class为SpringBootApplication, Spring Boot 在后台会根据这个标记进行很多自动配置,比如配置MVC,配置包扫描,注入必要的类,注入自动配置的类等等。

这里的main函数是一个java标准的main函数,这个相当于应用程序入口,servlet container会在启动的时候找到这个入口,启动Spring container,完成初始化。

3. 编写HelloWorldRestController

SpringBoot将推翻以往的Java应用开发

4. 直接启动应用程序,不需要部署

之前HelloWorld程序对于新手来说至少要花个10-20分钟之类的,有了SpringBoot, 最多3分钟之内搞定HelloWorld不是梦。

总结

这里我只是简单的对SpringBoot进行了讲解,SpringBoot有非常多值得深入讨论的东西,它不仅让我们做Java开发变的简单有效,更重要的是SpringBoot彻底颠覆了我们对Java开发的认识,让我们第一次有了”原来Java开发可以这么做” 的感觉。有了SpringBoot之后,Java程序员可以更专注于业务逻辑,进行更敏捷的开发。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    19

    文章

    2904

    浏览量

    102989
  • SpringBoot
    +关注

    关注

    0

    文章

    172

    浏览量

    105
收藏 人收藏

    评论

    相关推荐

    SpringBoot 如何实现热部署

    热部署是软件开发中一个非常有用的功能,它允许我们在不重新启动整个应用的情况下,依旧能够使我们修改的代码生效。 现在Java Web 开发应该都是使用的 SpringBoot,那么本篇文
    的头像 发表于 09-30 10:16 395次阅读
    <b class='flag-5'>SpringBoot</b> 如何实现热部署

    SpringBoot知识总结

    SpringBoot干货学习总结
    发表于 08-01 10:40

    SpringBoot 学习笔记

    SpringBoot 学习笔记 【整合JWT】添加依赖创建工具类登录获取jwt使用jwtDemo源码参考资料添加依赖pom.xml...com.auth0java-jwt3.12.0
    发表于 07-01 07:27

    springboot集成mqtt

    springboot集成mqtt,大纲一.数据入库1.数据入库解决方案二.开发实时订阅发布展示页面1.及时通讯技术2.技术整合
    发表于 07-16 07:53

    怎样去使用springboot

    怎样去使用springboot呢?学习springboot需要懂得哪些?
    发表于 10-25 07:13

    怎样去设计一个基于java ssm springboot的女士电商平台系统

    java ssm springboot女士电商平台10(源码+sql+论文可运行)主要设计:登录、注册、商品浏览、分类管理、模糊查找、轮播图、热销商品、购物车、订单、订单流程控制、用户管理、修改密码
    发表于 01-03 06:14

    java开发中遇到的难点有哪些_java开发常见的问题及解决办法

    本文主要介绍的是java开发,首先介绍了java开发的过程,其次介绍了java开发中遇到的难点,
    发表于 04-26 16:49 9.3w次阅读

    基于java ssm springboot女士电商平台系统源码+文档设计

    java ssm springboot女士电商平台10(源码+sql+论文可运行)主要设计:登录、注册、商品浏览、分类管理、模糊查找、轮播图、热销商品、购物车、订单、订单流程控制、用户管理、修改密码
    发表于 01-11 16:08 11次下载
    基于<b class='flag-5'>java</b> ssm <b class='flag-5'>springboot</b>女士电商平台系统源码+文档设计

    为什么开发人员认为Java很复杂

    我担任过架构师、技术负责人以及高级开发工程师,在我的职业生涯中,Java是我主要使用的编程语言。近年来,我也有时会使用Go、Node.js和.Net技术。我发现Java,尤其是SpringBo
    的头像 发表于 04-12 18:10 1731次阅读

    什么是 SpringBoot

    本文从为什么要有 `SpringBoot`,以及 `SpringBoot` 到底方便在哪里开始入手,逐步分析了 `SpringBoot` 自动装配的原理,最后手写了一个简单的 `start` 组件,通过实战来体会了 `
    的头像 发表于 04-07 11:28 1012次阅读
    什么是 <b class='flag-5'>SpringBoot</b>?

    SpringBoot常用注解及使用方法1

    基于 SpringBoot 平台开发的项目数不胜数,与常规的基于`Spring`开发的项目最大的不同之处,SpringBoot 里面提供了大量的注解用于快速
    的头像 发表于 04-07 11:51 443次阅读

    SpringBoot为什么出现?

    在介绍 SpringBoot 之前我们首先来简单介绍一下 Spring。Spring 是诞生于2002年的 Java 开发框架,可以说已经成为 Java
    的头像 发表于 04-07 14:39 788次阅读
    <b class='flag-5'>SpringBoot</b>为什么出现?

    Quarkus是SpringBoot的替代品吗?

    SpringBoot框架不用多介绍,Java程序员想必都知道。相对来说熟悉Quarkus的人可能会少一些。Quarkus首页放出的标语:超音速亚原子的Java(Supersonic Subatomic
    的头像 发表于 11-10 10:01 372次阅读
    Quarkus是<b class='flag-5'>SpringBoot</b>的替代品吗?

    javaweb和springboot能一起用吗

    JavaWeb 和 SpringBoot 是两种针对 Java 程序开发的框架,它们可以在一起使用。在本文中,我将详细介绍 JavaWeb 和 SpringBoot 的关系,并探讨如何
    的头像 发表于 11-16 10:54 857次阅读

    基于springboot和vue框架的Java

    本文将详细介绍基于Spring Boot和Vue框架进行Java应用开发的实践。首先,将介绍Spring Boot和Vue框架的基本概念及其优点。然后,将详细介绍如何搭建Spring Boot
    的头像 发表于 12-03 15:15 503次阅读