Spring Boot:快速入门教程

什么是Spring Boot?

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。简而言之,Spring Boot通过提供默认配置的方式整合了所有的框架,让我们可以更加简单、快速、方便地构建应用程序。

为什么要用Spring Boot?

Spring Boot包含以下几个特性:

  1. 默认提供了大部分框架的使用方式,方便进行快速集成
  2. Spring Boot应用可以独立运行,符合微服务的开发理念
  3. Spring Boot内置WEB容器,无需部署WAR包即可运行
  4. 提供了各种生产就绪型功能,如指标,健康检查和外部配置
  5. Spring Boot通过网站提供了项目模板,方便项目的初始化

通过以上这些非常优秀的特性,Spring Boot可以帮助我们非常简单、快速的构建起我们的项目,并能够非常方便进行后续开发、测试和部署。

第一个Spring Boot项目

多说无益,实践为上。接下来,我就来建立起我们的第一个Spring Boot项目。

生成项目模板

为方便我们初始化项目,Spring Boot给我们提供一个项目模板生成网站。

1.  打开浏览器,访问:https://start.spring.io/

2.  根据页面提示,选择构建工具,开发语言,项目信息等。

 

3.  点击 Generate the project,生成项目模板,生成之后会将压缩包下载到本地。

4.  使用IDE导入项目,我这里使用Eclipse,通过导入Maven项目的方式导入。

项目结构说明

如下图所示,Spring Boot的项目结构比较简单,只包含三个文件夹。

  • src/main/java  放置程序开发代码
  • src/main/resources  放置配置文件
  • src/test/java  放置测试程序代码

而在其下,包含以下主要文件。

  • DemoApplication.java 应用的启动类,包含MAIN方法,是程序的入口
  • application.properties 一个空的配置文件,后续可以配置数据源等信息
  • DemoApplicationTests.java 一个简单的单元测试类
  • pom.xml mave的配置文件,这个应该不用多作介绍了吧

项目结构图

 

添加WEB模块

其实不用添加WEB模块,Spring Boot已经可以启动了。但是为了方便查看,我们引入WEB模块,并添加一个REST接口进行测试。

1.  引入Maven依赖

在 pom.xml中添加web依赖。

pom.xml

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

2.  编写REST接口

新建一个com.louis.springboot.demo.controller包,并创建一个HelloController。

HelloController.java

复制代码
package com.louis.springboot.demo.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {@GetMapping("/hello")public String hello() {return "Hello Spring Boot!";}  
}
复制代码

项目运行测试

1.  右键项目 -> Run as -> Maven install,开始执行Maven构建,第一次会下载Maven依赖,可能需要点时间,如果出现如下信息,就说明项目编译打包成功了。

 

2.  右键文件 DemoApplication.java -> Run as -> Java Application,开始启动应用,当出现如下信息的时候,就说明应用启动成功了,默认启动端口是8080。

 

3.  打开浏览器,访问:http://localhost:8080/hello,返回“Hello Spring Boot!”说明我们添加的REST接口已经测试通过了。

代码单元测试

如果要编写单元测试也比较容易,打开的src/test/下的DemoApplicationTests.java文件,我们编写一个测试hello接口的测试方法,对于http请求的测试,我们可以使用mockmvc来模拟,详情参见具体代码。

DemoApplicationTests.java

复制代码
@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {private MockMvc mvc;@Beforepublic void setUp() throws Exception {mvc = MockMvcBuilders.standaloneSetup(new HelloController()).build();}@Testpublic void testHello() throws Exception {mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON)).andExpect(MockMvcResultMatchers.status().isOk()).andDo(MockMvcResultHandlers.print()).andReturn();}}
复制代码

右键DemoApplicationTests.java文件 -> Run as -> Junit Test,运行测试代码,可以从单元测试视图看到单元测试案例运行成功。

 

开发环境调试

如果每次修改代码之后都需要重新启动WEB应用,还是有点麻烦的,Spring Boot支持热启动,修改之后可以实时生效,开发的时候打开还是可以提供一些便利性的。

打开POM文件,在dependencies标签下添加spring-boot-devtools依赖,并修改build标签下的spring-boot-maven-plugin的fork属性为true即可。

复制代码
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional></dependency>
</dependencies> <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><fork>true</fork></configuration></plugin></plugins>
</build>
复制代码

启动端口修改

Spring Boot默认的启动端口是8080,如果需要修改,需要修改配置文件。

打开application.properties文件,在其中添加如下内容,配置启动端口号。

application.properties

server.port=8000

重新启动应用,查看控制台启动信息,我们发现启动端口已经变成8000了。

 

Yaml格式文件使目前比较流行的配置文件,我们可以使用Yaml格式配置来代替属性文件配置,将application.properties的文件名修改为application.yml,并将文件内容替换为如下格式内容即可。

application.yml

server:port: 8000

启动Banner定制

我们在应用启动的时候,可以看到控制台显示了Spring的Banner信息,我们可以通过定制这个功能,来放置我们自己的应用信息。

 

如果要定制自己的Banner, 只需要在 resources 下放置一个 baner.txt 文件,输入自己的banner字符即可。

 

Banner字符可以通过类似以下网站生成:

http://patorjk.com/software/taag
http://www.network-science.de/ascii/

 

生成后复制内容到banner.txt并编辑成想要的样式,完成后重启应用,效果如下。

胡言乱语

SpringBoot就是行,整啥啥都灵。

配置很容易,运行超简单。

开发难度小,资源也不少。

前途无限好,入坑要趁早。

转载于:https://www.cnblogs.com/7788IT/p/11143454.html

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

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

相关文章

loadruner11 socket脚本-10053错误

背景: socket 10053异常&#xff1a;软件主动放弃一个连接&#xff0c;原因是超时或协议错误。如果LR客户端报10053异常&#xff0c;说明LR在执行套接字操作时&#xff0c;发生通信超时、网络中断或其它异常&#xff0c;主动将Socket连接断开。也就是说&#xff1a;10053异常是…

万网独享主机Apache为Ecshop商城添加404页面详解

在博客园基本都是做看客的角色&#xff0c;自己基本都没写过文章&#xff0c;不过昨天的经历确实让我有想法了&#xff0c;因为在网络上面看了很多文章&#xff0c;每篇写的都相对较片面&#xff0c;对于我这个Linux新手来说不免有点分不清东南西北&#xff0c;一不小心就浪费了…

移动微技(Mobile Widget)应用开发权威指南

移动微技&#xff08;Mobile Widget&#xff09;应用开发权威指南 基本信息 作者&#xff1a; 程宝平 杨晓华 朱春梅 丛书名&#xff1a; 中国移动创新系列丛书 出版社&#xff1a;电子工业出版社 ISBN&#xff1a;9787121104527 上架时间&#xff1a;2010-4-19 出版日…

[转载]Informix Dynamic Server维护手册

转载于:https://www.cnblogs.com/zgqjymx/archive/2011/03/06/1972733.html

Java反编译器Java Decompiler

Java Decompiler不仅为Windows、Linux、OSX系统提供GUI程序JD-GUI&#xff0c;而且还提供了Eclipse插件JD-Eclipse&#xff0c;官方网站&#xff1a;http://java.decompiler.free.fr/转载于:https://www.cnblogs.com/heroking2000/archive/2009/10/12/1582120.html

alternatives命令使用方法

alternatives命令使用方法 alternatives是Linux下的一个功能强大的命令。仅仅能在root权限下运行。如系统中有几个命令功能十分相似&#xff0c;却又不能任意删除&#xff0c;那么能够用 alternatives 来指定一个全局的设置。alternatives经常使用于同一个系统中安装同一软件的…

linux下挂接fat32分区

作者: Eulogize 出自: http://www.linuxdiyf.com Coolinux 在/mnt 下新建一个文件夹&#xff0c;命名可以随意&#xff0c;如D等。然落伍入终端输出上面的饬令#mount -t vfat -o codepage936 iocharsetgb2312 /hdv/hdX /mnt/dX在LINUX下的实体名&#xff0c;如Chda1版权声明…

Apache、Nginx、Tomcat的区别

Apache、Nginx、Tomcat的区别NginxTomcatApache&#xff0c;Nginx与Tomcat的区别Nginx -----是一个高性能的HTTP和反向代理服务器&#xff0c;也是一个IMAP/POP3/SMTP代理服务器。** Tomcat -----servlet(jsp)应用服务器 Tomcat是运行在JVM中的一个进程。它定义为“中间件”…

python中通过元类(TYPE)简单实现对象关系映射(ORM)

ORM是创建一个实例对象&#xff0c;用创建他的类名当做数据表名&#xff0c;用创建他的类属性对应数据表的字段&#xff0c;不需要在自己写复杂的sql语句&#xff0c;而是通过对实例对象的操作时&#xff0c;能让代码自动帮我们整理为对应的sql语句。 class User(父类):uid (&…

ORA-12519: TNS:no appropriate service handler found 解决

selectcount(*) fromv$process --当前的连接数selectvalue fromv$parameter wherename processes--数据库允许的最大连接数修改最大连接数:altersystem setprocesses 300scope spfile;重启数据库:shutdownimmediate;startup;--查看当前有哪些用户正在使用数据SELECTosuser, a.u…

Linux下Web效力器架设攻略-1

来日诰日我们来看看怎样将Web效力器架在Linux零碎下。    LINUX零碎中罕见的有&#xff1a;CERN、NCSA、Apache三种体式格式&#xff0c;浅显最常用的要领就是用Apache。此种体式格式特点分明&#xff0c;设置装备部署简明&#xff0c;具有最大的对零碎兼容性&#xff0c;以…

Codeforces 1188A 构造

题意&#xff1a;给你一颗树&#xff0c;树的边权都是偶数&#xff0c;并且边权各不相同。你可以选择树的两个叶子结点&#xff0c;并且把两个叶子结点之间的路径加上一个值&#xff08;可以为负数&#xff09;&#xff0c;问是否可以通过这种操作构造出这颗树&#xff1f;如果…

iOS- 关于AVAudioSession的使用——后台播放音乐

1.前言   •AVAudioSession是一个单例&#xff0c;无需实例化即可直接使用。AVAudioSession在各种音频环境中起着非常重要的作用•针对不同的音频应用场景&#xff0c;需要设置不同的音频会话分类1.1AVAudioSession的类别   •AVAudioSessionCategoryAmbient–混音播放&…

检索

【摘抄】基于线性表的检索一、检索的基本概念和算法分类1、检索概念&#xff1a; 可以形式化地定义基于关键码的检索。假定k1、k2…kn是互不相同的关键码值&#xff0c;有一个包含n条记录的集合C&#xff0c;形式如下&#xff1a; (k1, R1)&#xff0c;(k2, R2)&#xff0c;…

ajax请求后无法实现指定页面跳转或带参数跳转

问题&#xff1a;我们通过Ajax在前端对Controller的接口进行请求&#xff0c;处理完成后&#xff0c;无法通过Controller的return方法返回指定的页面。 原因&#xff1a;ajax只是局部刷新&#xff0c;所以不能在后台接口直接进行页面的跳转&#xff0c;我们可以在ajax的succes…

例说C#深拷贝与浅拷贝

一开始&#xff0c;先对C#深拷贝与浅拷贝知识做个简单的总结。 无论是浅拷贝与深拷贝&#xff0c;C#都将源对象中的所有字段复制到新的对象中。不过&#xff0c;对于值类型字段&#xff0c;引用类型字段以及字符串类型字段的处理&#xff0c;两种拷贝方式存在一定的区别&#x…

c++程序的多文件组织

当程序规模变大后&#xff0c;一个程序用多个文件组织&#xff0c;便于组织生产。这样&#xff0c;不必每次都重复对所有代码进行编译&#xff0c;而只需编译一次即可。把编译后所形成的目标文件保存起来&#xff0c;以后在需要时把它调出来直接与程序的目标文件相连接即可。 C…

strconv---用来基本类型之间的转换

strconv---用来基本类型之间的转换字符串转int&#xff1a;Atoi(s string)(i int,err error)int转字符串: Itoa(i int)stringstring转换为对应TP类型&#xff1a;ParseBool()、ParseFloat()、ParseInt()、ParseUint()。因为string转其它类型可能会失败&#xff0c;所以这些函数…

企业架构 - 开篇:TOGAF介绍

在《年度总结和计划&#xff1a;去年4个1&#xff0c;今年5个1》中说过今年我准备在项目组引入一个架构方TOGAF。工业和信息化部副部长杨学山在一次内部座谈时提到&#xff1a;与西方发达国家比&#xff0c;国内的信息化建设在硬件方面已经不相上下&#xff0c;在软件方面有5年…

Linux操作系统定时任务系统 Cron

/sbin/service crond start //启动服务 /sbin/service crond stop //关闭服务 /sbin/service crond restart //重启服务 /sbin/service crond reload //重新载入配置 你也可以将这个服务在系统启动的时候自动启动: 在/etc/rc.d/rc.local这个脚本的末尾加上: /sbin/service cron…