为什么越来越多的开发者选择使用Spring Boot

Web应用开发背景

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

Java EE开发生态图

最受Java开发者喜好的框架当属spring,Spring也成为了在Java EE开发中真正意义上的标准,但是随着新技术的发展,脚本语言大行其道的时代(Node JS,Ruby,Groovy,Scala等),JavaEE使用Spring逐渐变得笨重起来,大量的XML文件存在与项目中,繁琐的配置,整合第三方框架的配置问题,低下的开发效率和部署效率等等问题。

这些问题在不断的社区反馈下,Spring团队也开发出了相应的框架:Spring Boot。Spring Boot可以说是至少近5年来Spring乃至整个Java社区最有影响力的项目之一,也被人看作是:Java EE开发的颠覆者(但是不是有点too young,too simple的感觉!)。

Spring Boot解决的问题

(1) Spring Boot使编码变简单

(2) Spring Boot使配置变简单

(3) Spring Boot使部署变简单

(4) Spring Boot使监控变简单

(5) Spring的不足

Spring Boot的干爹和其优点

准确的说,应该是亲爹,但是。。。大家都懂的!

官方地址:http://projects.spring.io/spring-boot/

这里写图片描述

Spring Boot继承了Spring的优点,并新增了一些新功能和特性:

(1)SpringBoot是伴随着Spring4.0诞生的,一经推出,引起了巨大的反向;
(2)从字面理解,Boot是引导的意思,因此SpringBoot帮助开发者快速搭建Spring框架;
(3)SpringBoot帮助开发者快速启动一个Web容器;
(4)SpringBoot继承了原有Spring框架的优秀基因;
(5)SpringBoot简化了使用Spring的过程;
(6)Spring Boot为我们带来了脚本语言开发的效率,但是Spring Boot并没有让我们意外的新技术,都是Java EE开发者常见的额技术。

Spring Boot主要特性

(1)遵循“习惯优于配置”的原则,使用Spring Boot只需要很少的配置,大部分的时候我们直接使用默认的配置即可;
(2)项目快速搭建,可以无需配置的自动整合第三方的框架;
(3)可以完全不使用XML配置文件,只需要自动配置和Java Config;
(4)内嵌Servlet容器,降低了对环境的要求,可以使用命令直接执行项目,应用可用jar包执行:java -jar;
(5)提供了starter POM, 能够非常方便的进行包管理, 很大程度上减少了jar hell或者dependency hell;
(6)运行中应用状态的监控;
(7)对主流开发框架的无配置集成;
(8)与云计算的天然继承;

Spring Boot的核心功能

(1)独立运行的Spring项目

Spring Boot可以以jar包的形式进行独立的运行,使用:java -jar xx.jar 就可以成功的运行项目,或者在应用项目的主程序中运行main函数即可;

(2)内嵌的Servlet容器

内嵌容器,使得我们可以执行运行项目的主程序main函数,是想项目的快速运行;

主程序代码SpringbootDemoApplication.java

package com.xuliugen.demo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class SpringbootDemoApplication {public static void main(String[] args) {SpringApplication.run(SpringbootDemoApplication.class, args);}
}

(3)提供starter简化Manen配置

Spring Boot提供了一系列的starter pom用来简化我们的Maven依赖,下边是创建一个web项目中自动包含的依赖,使用的starter pom以来为:spring-boot-starter-web

这里写图片描述

Spring Boot官网还提供了很多的starter pom,请参考:

http://docs.spring.io/spring-boot/docs/1.4.1.RELEASE/reference/htmlsingle/#using-boot-starter

这里写图片描述

(4)自动配置Spring

Spring Boot会根据我们项目中类路径的jar包/类,为jar包的类进行自动配置Bean,这样一来就大大的简化了我们的配置。当然,这只是Spring考虑到的大多数的使用场景,在一些特殊情况,我们还需要自定义自动配置;

(5)应用监控

Spring Boot提供了基于http、ssh、telnet对运行时的项目进行监控;这个听起来是不是很炫酷!

示例:以SSH登录为例

1、首先,添加starter pom依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-remote-shell</artifactId>
</dependency>

2、运行项目,此时在控制台中会出现SSH访问的密码:

这里写图片描述

3、使用SecureCRT登录到我们的程序,端口为2000,用户为user:

这里写图片描述

密码就是刚才的shell access;

但是当我点击连接的时候,出现错误:

这里写图片描述

显然是SecureCRT的版本不支持,所以就放弃了这个,使用Git Bash:

ssh -p 2000 user@127.0.0.1
  • 1
  • 1

这里写图片描述

剩下的事情,大家自己玩吧!

(6)无代码生成和XML配置

Spring Boot神奇的地方不是借助于代码生成来实现的,而是通过条件注解的方式来实现的,这也是Spring 4.x的新特性。

Spring Boot的快速搭建案例

下边使用的是IDEA快速搭建一个Spring Boot项目

(1)File—-New—New Project

这里写图片描述

(2)点击Next填写相应的信息

这里写图片描述

(3)点击Next,选择Dependencies,这里创建Web项目选择—–Web:

这里写图片描述

(4)点击Next,设置项目名称,这里默认设置,点击Next之后,项目等一下就创建好了

这里写图片描述

找到应用程序的主函数,运行即可:

这里写图片描述

注意,在pom文件里的java版本这个要和你的机子上一致!我的是1.7,默认创建项目的时候位1.8:

<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.7</java.version>
</properties>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/292026.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Blog.Core开源】快速预览Admin界面效果

( 半盏屠苏犹未举&#xff0c;灯前小草写桃符 )书接上文《【Blog.Core开源】开发插件&#xff0c;给Swagger加权》&#xff0c;在上篇文章中&#xff0c;我们给项目的接口文档增加了一个控制界面&#xff0c;可以输入用户名密码&#xff0c;这样也算是简单的一个加密控制了&…

视图添加字段_Odoo开发教程2-为模型添加字段

开启开发者模式后&#xff0c;我们可通过菜单 Settings > Technical > Database Structure > Models来查看模型的定义。这时搜索 res.partner(未安装其它应用的情况下第一个即是)&#xff0c;对应的模型描述为 Contact。点击打开表单视图&#xff0c;这时就可以看到 p…

改变listview中item选中时文字的颜色

摘要 当listview的某个item选中时&#xff0c;默认有个选中的高亮显示&#xff0c;如果你要自定义选中时的高亮显示效果&#xff0c;可以在listview中设置属性 android:listSelector"drawable/item_selector" 其中 item_selector 是在drawable目录下定义的一个xml文件…

安卓学习笔记2

1.IntentFilter Intent详解 http://www.cnblogs.com/engine1984/p/4146621.html <activity android:name".SecondActivity"><intent-filter><action android:name"hello1" /><action android:name"hello2" /><cate…

大公司视频转码

1. 其实基本思路很简单的切片 --》 转码 --》合片 就这个三部曲 2. 存储就是NAS或者hadoop之类的3. ffmpeg对不少切片兼容性有问题 4. 雪影(41044375) 2014-1-13 22:19:17帮上个东家挣了几百万~搞完了哦100台机器 分布式转码 5.怎么连续播放 不黑屏呢&#xff1f;6.雪影(410443…

linux之通过htop操作进程使用总结

1、htop介绍 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器,htop比top更加人性化,有具体界面可以操作,读者可以先使用top看下效果,然后再安装htop. 2、安装htop 输入下面命令 sudo apt-get install htop 3、效…

6大奖项!首届 .NET 黑客松大赛圆满收官!

.NET Conf China 2021 是面向开发人员的社区峰会&#xff0c;基于 .NET Conf 2021&#xff0c;庆祝 .NET 6 的发布和回顾过去一年来 .NET 在中国的发展。峰会由来自北京、上海、苏州、深圳、武汉、广州、青岛、烟台、杭州等各地区的 .NET 技术社区共同发起举办&#xff0c;由微…

看完这套书才发现,以前的四大名著都白看了!

▲ 点击查看四大名著是我国最经典的古典文学作品&#xff0c;代表着传统文化在小说创作方面的最高成就。同时&#xff0c;也是必学书、必读书、必考书。从小了说&#xff0c;在语文学习上&#xff0c;全国统一的语文教材里&#xff0c;五年级下册已出现了四大名著的章节。作为整…

python使用spark sql查询impala_如何使用JDBC将Impala表直接加载到Spark?

我正在尝试使用Python编写一个spark作业,它将打开与Impala的jdbc连接,并将Impala直接从Impala加载到Dataframe中.这个问题非常接近,但在scala中&#xff1a;Calling JDBC to impala/hive from within a spark job and creating a table我该怎么做呢&#xff1f;其他数据源有很多…

在Windows Live Writer中插入C# code

平时都是用Windows Live Writer写博客&#xff0c;发布博客。遇到需要插入代码都是先在notepad中写好&#xff0c;或者是拷贝到notepad&#xff0c;再从notepad中拷到Windows Live Writer&#xff0c;比较麻烦。在博客中使用插件Code Snippet就能很好解决这个问题。 下载地址&a…

linux之vifm和ranger操作文件管理器使用总结

1、介绍vifm和ranger vifm和ranger都是有图形的文件管理操作,有点类是windows上面的“我的电脑” 2、安装vifm和ranger 在终端输入下面命令 sudo apt-get install vifmsudo apt-ger install ranger 3、常规使用vifm 安装成功之后,我们在控制台输入vifm命令,然后显示下面…

RHCS(概念篇)

一、 什么是RHCS RHCS是Red Hat Cluster Suite的缩写&#xff0c;也就是红帽子集群套件&#xff0c;RHCS是一个能够提供高可用性、高可靠性、负载均衡、存储共享且经济廉价的集群工具集合&#xff0c;它将集群系统中三大集群架构融合一体&#xff0c;可以给web应用、数据库应用…

.NET 运行时设置

.NET 运行时设置.NET 5&#xff08;包括 .NET Core 版本&#xff09;支持使用配置文件和环境变量在运行时配置 .NET 应用程序的行为。如果出现以下情况&#xff0c;则运行时配置是一个不错的选择&#xff1a;你不拥有或控制应用程序的源代码&#xff0c;因此无法以编程方式对其…

ElasticSearch——学习笔记

2019独角兽企业重金招聘Python工程师标准>>> Relational DB -> Databases -> Tables -> Rows -> Columns Elasticsearch -> Indices -> Types -> Documents -> Fields 转载于:https://my.oschina.net/u/2307114/blog/799905

opencv python安装linux_Ubuntu16.04、Python3.6下安装opencv4遇到的问题

1.安装opencv在网上搜索Ubuntu16.04下安装opencv4想必一定搜到大把的编译源码安装opencv的教程&#xff0c;其实安装opencv只需一句命令&#xff1a;pip3 install opencv-python说实在我着实没想明白为什么那么多人要编译源码安装呢。。。2.python3.6中导入opencv库终端敲入pyt…

linux之用wget下sublime简单使用总结

1、简单介绍wget 1&#xff09;、wget命令在linux系统上面主要通过url下载&#xff0c; wget url 2&#xff09;、比如我们需要断点续传我们加上参数 -c wget -c url 2、下载sublime 1&#xff09;电脑32位 wget http://c758482.r82.cf2.rackcdn.com/Sublime\ Text\ 2.0.2.tar.…

查看端口被占用的进程号然后结束进程(解决端口被进程占用的问题)

在dos窗口下输入netstat -ano|findstr 8080&#xff08;这里指所占用的端口号&#xff09; taskkill /pid 6865&#xff08;这里至查询出来占用8080端口的pid码&#xff09;转载于:https://www.cnblogs.com/tianhao/p/4231874.html

Python操作Excel——win32com模块和xlrd+xlwt+xlutils组合

今天&#xff0c;接到一个任务&#xff0c;要生成大约两百个excel文件&#xff0c;从2006年到2013年&#xff0c;每个月两个文件&#xff0c;这些文件中除了几个关于日期的单元格不同外&#xff0c;其他数据都相同&#xff0c;所以就想到可以用python写一个小脚本&#xff0c;自…