springboot系列教程(一):简介与入门案例(含源码)

一、SpringBoot简介

  • SpringBoot继承了Spring优秀的基因,上手难度小
  • 简化配置,提供各种默认配置来简化项目配置
  • 内嵌式容器简化Web项目,简化编码

Spring Boot 则会帮助开发着快速启动一个 web 容器,在 Spring Boot 中,只需要在 pom 文件中添加如下一个 starter-web 依赖即可.

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
  • 发展趋势看

微服务是未来发展的趋势,项目会从传统架构慢慢转向微服务架构,因为微服务可以使不同的团队专注于更小范围的工作职责、使用独立的技术、更安全更频繁地部署。

二、搭建开发环境

1、创建一个Maven项目

在这里插入图片描述

2、引入核心依赖

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

3、编写配置文件

application.yml

# 端口
server:port: 8001

4、启动文件注解

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

启动上面这个类,springboot的基础环境就搭建好了。想想之前的Spring框架的环境搭建,是不是就是这个感觉:意会一下吧。

三、入门案例

1、创建Web接口

import com.boot.hello.entity.ProjectInfo;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/*** SpringBoot 2.0 第一个程序*/
@RestController
public class HelloController {@RequestMapping("/getInfo")public ProjectInfo getInfo (){ProjectInfo info = new ProjectInfo() ;info.setTitle("SpringBoot 2.0 基础教程");info.setDate("2019-06-05");info.setAuthor("知了一笑");return info ;}
}

@RestController注解 等价 @Controller+ @ResponseBody 返回Json格式数据。

2、参数映射

  • 首先看看SpringBoot 如何区分环境
    在这里插入图片描述

这里标识配置加载指定的配置文件。

  • 参数配置

application-pro.yml

user:author: 知了一笑title: SpringBoot 2.0 程序开发time: 2019-07-05
  • 参数内容读取
@Component
public class ParamConfig {@Value("${user.author}")private String author ;@Value("${user.title}")private String title ;@Value("${user.time}")private String time ;// 省略 get 和 set 方法
}
  • 调用方式
/*** 环境配置,参数绑定*/
@RestController
public class ParamController {@Resourceprivate ParamConfig paramConfig ;@RequestMapping("/getParam")public String getParam (){return "["+paramConfig.getAuthor()+";"+paramConfig.getTitle()+";"+paramConfig.getTime()+"]" ;}
}

3、RestFul接口测试

  • Rest风格接口
/*** Rest 风格接口测试*/
@RestController // 等价 @Controller + @ResponseBody 返回Json格式数据
@RequestMapping("rest")
public class RestApiController {private static final Logger LOG = LoggerFactory.getLogger(RestApiController.class) ;/*** 保存*/@RequestMapping(value = "/insert",method = RequestMethod.POST)public String insert (UserInfo userInfo){LOG.info("===>>"+userInfo);return "success" ;}/*** 查询*/@RequestMapping(value = "/select/{id}",method = RequestMethod.GET)public String select (@PathVariable Integer id){LOG.info("===>>"+id);return "success" ;}
}
  • 测试代码
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = MockServletContext.class)
@WebAppConfiguration
public class TestRestApi {private MockMvc mvc;@Beforepublic void setUp() throws Exception {mvc = MockMvcBuilders.standaloneSetup(new RestApiController()).build();}/*** 测试保存接口*/@Testpublic void testInsert () throws Exception {RequestBuilder request = null;request = post("/rest/insert/").param("id", "1").param("name", "测试大师").param("age", "20");mvc.perform(request).andExpect(content().string(equalTo("success")));}/*** 测试查询接口*/@Testpublic void testSelect () throws Exception {RequestBuilder request = null;request = get("/rest/select/1");mvc.perform(request).andExpect(content().string(equalTo("success")));}
}

这样SpringBoot2.0的入门案例就结束了,简单,优雅,有格调。

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

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

相关文章

【性能测试】第二节.loadrunner工具介绍(LR)

文章目录 前言一、VUG&#xff1a;虚拟用户发生器 1.1 实现作用 1.2 创建一个新的性能测试脚本 1.3 打开LR自带的web系统 1.4 编写性能测试脚本流程方法 1.5 性能测试脚本的增强二、Controller 2.1 基础功能介绍 2.2 Design 2.3 Run三…

手把手教你在Overleaf的IEEE模板中用ref.bib加入引用

手把手教你在Overleaf的IEEE模板中用ref.bib加入引用 文章目录 1. 杂话2. 具体步骤2.1 创建ref.bib文件2.2 加入引用2.3 在tex文件中导入引用 1. 杂话 大伙儿应该都用过Latex和Overleaf吧&#xff0c;具体是个啥东西我就不说了哈。Overleaf上面的在这里IEEE 会议官方模板。之前…

websocket中的STOMP 协议:sockjs-client 和 stompjs

文章目录 一、简介二、安装三、创建 webSocket.ts四、页面中使用一、简介 使用 WebSockets 进行实时通信时,一种常见的实现方式是使用 STOMP 协议。STOMP(Simple Text Oriented Messaging Protocol)是一种轻量级的协议,通常用于客户端和消息代理之间的通信,如 WebSockets…

安防监控视频平台LntonCVS视频融合共享平台智慧消防实现远程集中视频监控方案

近年来&#xff0c;电力系统内变电站着火事件频发&#xff0c;这对消防安全管理提出了严峻挑战。我国消防安全基础设施不完善、管理机制不健全、应急处置能力不足及公众消防安全意识淡薄等问题&#xff0c;严重制约了消防安全的提升。因此&#xff0c;加强变电站的消防安全管理…

Oracle统计信息自动收集任务检查与调整

Oracle统计信息自动收集任务检查与调整 表统计信息收集情况检查统计信息自动收集任务检查统计信息自动收集任务调整表统计信息收集情况检查 检查表的统计信息收集情况: set lines 300 col owner for a30 col table_name for a30 col partition_name for a40 col partitioned…

【C++】 List 基本使用

C List 基本使用 基本概念 list 是一个序列容器&#xff0c;它内部维护了一个双向链表结构。与 vector 或 deque 等基于数组的容器不同&#xff0c;list 在插入和删除元素时不需要移动大量数据&#xff0c;因此在这些操作上具有较高的效率。然而&#xff0c;访问列表中的特定…

课程设计——Python+OpenCV数字图像处理[车牌识别]

Python opencv 车牌识别 数字图像处理课程设计作业Python3OpenCV使用tkinter搭建界面tmp/文件夹是数字图像处理过程chepai/文件夹是车牌图片pic/文件夹是程序界面图PPT文件是验收时要讲的程序是从网上学习的并自己弄的&#xff0c;不完善&#xff0c;识别率不高 开发环境配置…

使用MovaXterm连接VMware的centos

一、确认局域网ip 检查虚拟机分配的网段是否一致 二、确认centos的ip 输入 ip addr 获得设备ip为192.168.153.130 三、用MovaXterm建立ssh连接 有同行可能会问&#xff0c;直接使用VMware操作centos系统不行吗&#xff1f;为什么要再多一步。 理由&#xff1a;1、测试环境c…

【Navicat Premium Lite 17】无需破解、不在担心绿诗涵——官方的免费轻量级Navicat来了

Navicat Premium Lite 是 Navicat 的精简版&#xff0c;它包含了用户执行主要的基本数据库操作所需的核心功能。它允许你同时连接到各种数据库平台&#xff0c;包括 MySQL、PostgreSQL、SQL Server、Oracle、MariaDB&#xff0c;以及 Redis 和 MongoDB 等NoSQL 数据库&#xff…

MVC之 Controller 》》 ModelState ValidationMessageFor ValidationSummary

ModelState是Controller的一个属性&#xff0c;可以被继承自System.Web.Mvc.Controller的那些类访问。它表示在一次POST提交中被提交到服务器的 键值对集合&#xff0c;每个记录到ModelState内的值都有一个错误信息集。尽管ModelState的名字中含有“Model”&#xff0c;但它只有…

JVM监控及诊断工具-命令行篇-jstat命令介绍

JVM监控及诊断工具-命令行篇01-jstat&#xff1a;查看JVM统计信息 一 基本情况二 基本语法2.1 option参数1. 类装载相关的&#xff1a;2. 垃圾回收相关的-gc&#xff1a;显示与GC相关的堆信息。包括Eden区、两个Survivor区、老年代、永久代等的容量、已用空间、GC时间合计等信息…

2024 年全国青少年信息素养大赛 Python 小学组复赛真题

2024 年全国青少年信息素养大赛 Python 小学组复赛真题 《伶俐角少儿编程》gzh查看所有题目 第一题 题目描述 在一个神秘的王国里,国王希望通过一个简单的测试来评估他的子民对基础数学运算的掌握情况。他决定让每个人输入一个正整数 N (0≤N≤1000),然后计算并输出(5N)的值…

jmeter-beanshell学习9-放弃beanshell

写这篇时候道心不稳了&#xff0c;前面写了好几篇benashell元件&#xff0c;突然发现应该放弃。想回去改前面的文章&#xff0c;看了看无从下手&#xff0c;反正已经这样了&#xff0c;我淋了雨&#xff0c;那就希望别人也没有伞吧&#xff0c;哈哈哈哈&#xff0c;放在第九篇送…

python datetime库与时间戳timestamp的转换

文章目录 datetime常用函数datetime与timestamp转换 datetime常用函数 Python中的datetime模块是一个处理日期和时间的强大工具。下面是一些常用的datetime方法和属性&#xff1a; datetime.now()&#xff1a;返回当前日期和时间的datetime对象。 from datetime import date…

数据结构第26节 广度优先搜索

广度优先搜索&#xff08;Breadth-First Search&#xff0c;简称BFS&#xff09;是一种用于遍历或搜索树或图数据结构的算法。其主要特性是以层级顺序遍历图的所有节点&#xff0c;从一个指定的起点开始&#xff0c;首先访问所有直接相连的邻居节点&#xff0c;然后再访问它们的…

智慧商超-下

原文&#xff1a;https://blog.c12th.cn/archives/29.html 智慧商超-下 测试&#xff1a;笔记本原装操作系统&#xff1a;Windows 10 家庭中文版 资源分享链接&#xff1a;提取码&#xff1a;uya0 卸载SQL步骤&#xff1a; https://blog.csdn.net/qq1623803207/article/detail…

Linux yum-config-manager命令教程:轻松管理YUM软件源(附实例详解和注意事项)

Linux yum-config-manager命令介绍 yum-config-manager 是一个用来管理 YUM 软件源的工具&#xff0c;它允许用户启用、禁用、添加或删除软件源。这个命令对于 Linux 系统管理员来说非常重要&#xff0c;因为它可以帮助他们控制软件包的来源&#xff0c;确保系统安装的软件是最…

自定义json序列化和反序列化

一、LocalDateTime反序列化异常 首先我们定义一个java POJO实体类&#xff0c;其中关键的成员变量时birthDate,我们没有采用Date数据类型&#xff0c;而是采用了Java8 新的日期类型LocalDateTime,使用LocalDateTime的好处我就不多说了&#xff0c;有很多的文章解释说明。我们把…

Java常见JUC并发工具类

Lock 并发编程领域的两大核心问题&#xff1a; 一个是 互斥&#xff0c;即同一时刻只允许一个线程访问共享资源 另一个是 同步&#xff0c;即线程之间如何通信、协作 这两大问题&#xff0c;管程&#xff08;synchronized&#xff09;都是能够解决的。Java SDK并发包通过Lock和…

详解一下马拉车算法 Manache算法 使用c++

马拉车算法是寻找最长回文子串的高效算法&#xff0c;时间复杂度为O&#xff08;n&#xff09; #include <iostream> #include <string> #include <vector> using namespace std;string longestPalindrome(string s) {// 步骤1: 预处理&#xff0c;在字符间…