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 会议官方模板。之前…

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

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

【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时间合计等信息…

jmeter-beanshell学习9-放弃beanshell

写这篇时候道心不稳了&#xff0c;前面写了好几篇benashell元件&#xff0c;突然发现应该放弃。想回去改前面的文章&#xff0c;看了看无从下手&#xff0c;反正已经这样了&#xff0c;我淋了雨&#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…

自定义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和…

【Linux】进程控制的详细介绍

前言 在此之前&#xff0c;我们学过进程的概念&#xff0c;进程的状态&#xff0c;进程地址空间等一系列进程相关的问题。本章我们继续学习进程&#xff0c;我们要来学习一下进程的控制&#xff0c;关于进程等待&#xff0c;进程替换等问题。 目录 1.再次认识Fork函数1.1 fork…

internet download manager(IDM下载器) 6.42.8.2下载安装使用指南

internet download manager(IDM下载器) 6.42.8.2Z是一款功能强大的下载加速工具&#xff0c;能够显著提升您的下载速度&#xff0c;最高可达500%。它不仅能够加速下载&#xff0c;还能对下载任务进行智能调度&#xff0c;并具备恢复中断下载的能力。根据用户评价&#xff0c;无…

初识C++(命名空间、缺省参数)

初识C 命名空间namespace关键字命名空间的使用 缺省参数 命名空间 namespace关键字 在C中&#xff0c;为了尽可能避免命名冲突&#xff0c;需要对各个变量进行域作用限定&#xff0c;这就需要使用到namespace关键字&#xff0c;namespace可以定义一个命名空间&#xff0c;即命…

LabVIEW红外热波图像缺陷检

开发使用LabVIEW开发的红外热波图像缺陷检测系统。该系统结合红外热像仪、工业相机和高效的数据采集硬件&#xff0c;实现对工件表面缺陷的自动检测和分析。通过LabVIEW的强大功能&#xff0c;系统能够实时采集、处理和显示红外热波图像&#xff0c;有效提高了检测的精度和效率…

vue:标签属性绑定Vue实例【ref,reactive,内置指令v-bind,v-on】,预定义变量、方法【$methods,$computed】

Vue2、3组件通信、双向绑定、插槽slot、内置指令_组件双向绑定-CSDN博客​Vue2&#xff0c;3响应式原理&#xff0c;ref和reactive&#xff0c;toRef和toRefs&#xff0c;shallowRef和shallowRefs_vue2 shallowref-CSDN博客 vue2【Options 选项API、mixin混入】&#xff0c;vu…

WAF基础介绍

WAF 一、WAF是什么&#xff1f;WAF能够做什么 二 waf的部署三、WAF的工作原理 一、WAF是什么&#xff1f; WAF的全称是&#xff08;Web Application Firewall&#xff09;即Web应用防火墙&#xff0c;简称WAF。 国际上公认的一种说法是&#xff1a;Web应用防火墙是通过执行一…

免开steam 脱离steam 进行游戏的小工具

链接&#xff1a;https://pan.baidu.com/s/1k2C8b4jEqKIGLtLZp8YCgA?pwd6666 提取码&#xff1a;6666 我们只需选择游戏根目录 然后输入AppID 点击底部按钮 进行就可以了 关于AppID在&#xff1a;