为什么越来越多的开发者选择使用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…

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;五年级下册已出现了四大名著的章节。作为整…

在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命令,然后显示下面…

.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

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.…

C# dynamic 类型用法举例

dynamic类型允许编写忽略编译期间的类型检查的代码。编译器假定&#xff0c;给dynamic类型的对象定义的任操作都是有效的。如果该操作无效&#xff0c;则在代码运行之前不会检测该错误&#xff0c;如下面的示例所示:这个示例没有编译&#xff0c;因为它调用了staticPerson.GetF…

在微信小程序中绘制图表(part2)

本期大纲 1、确定纵坐标的范围并绘制 2、根据真实数据绘制折线 相关阅读&#xff1a;在微信小程序中绘制图表&#xff08;part1&#xff09;在微信小程序中绘制图表&#xff08;part3&#xff09; 关注我的 github 项目 查看完整代码。 确定纵坐标的范围并绘制 为了避免纵坐标的…

Windows 8.1 新增控件之 CommandBar

上一篇为大家介绍了AppBar 的相关内容&#xff0c;本篇继续介绍CommandBar 的使用方法。与AppBar 相比而言&#xff0c;CommandBar 在开发使用方面较为单一&#xff0c;在按键布局上分为主控区&#xff08;Primary Commands&#xff09;与辅控区&#xff08;Secondary Commands…

很抱歉,你不涨工资,正是因为你“太努力”!

太多人干了一辈子工作却还在原地踏步太多人在公司里任劳任怨最终还一事无成你或许欠缺的不是努力而是思维聪明的人都会投资自己想办法让自己变得无可替代这样老板离不开你的那一天就是你升职加薪的时候快来和我一起看看哪些公众号都能帮你提高能力呢&#xff1f;募格课堂ID&…

php文件锁解锁是删除对应的文件_软件 | 文件解锁强制删除工具 Wise Force Deleter v1.49...

有过电脑里面想删除一个文件&#xff0c;死活删除不了的痛苦吗&#xff1f;用尽了各种办法&#xff0c;关闭进程&#xff0c;删除关联文件&#xff0c;卸载对应的程序&#xff0c;然而还是无法删除&#xff0c;甚至都进入了安全模式删除&#xff0c;依然文件纹丝不动&#xff0…

.NET 7 预览版来啦,我升级体验了

听说.NET 7 来了&#xff0c;站长怎能不尝鲜呢&#xff0c;在除夕当天将体验情况简单汇报下&#xff0c;然后迎新春喽&#xff1a;本文目录.NET 7 详情&#xff08;Proposed .NET 7 Breaking Changes #7131&#xff09;.NET 7 SDK下载尝鲜体验3.1 安装.NET 7 SDK3.2 Hello Word…

【emWin】例程六:设置颜色

实验指导书及代码包下载&#xff1a; 链接&#xff1a;http://pan.baidu.com/s/1kVr25vT 密码&#xff1a;xbkj 实验现象&#xff1a;