当前位置: 首页 > news >正文

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的入门案例就结束了,简单,优雅,有格调。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • html5——CSS列表样式属性
  • django报错(一):python manage.py makemigrations,显示“No changes detected”
  • android的跨进程通讯方式
  • Qt窗口程序整理汇总
  • 【D3.js in Action 3 精译】第二章 DOM 的操作方法
  • 大语言模型 API
  • 虚拟机及其Debian(kali)安装
  • 元服务体验-服务发现
  • 基于STM32设计的物联网智能鱼缸(微信小程序)(187)
  • 进程通信(3): System V IPC
  • 2.I/O口
  • Ubuntu系统成功安装Docker教程
  • 【Linux】进程间通信——消息队列和信号量
  • 【JavaScript脚本宇宙】提升开发效率:选择合适的日期处理工具库
  • actual combat 35 —— es
  • JDK 6和JDK 7中的substring()方法
  • Js基础知识(四) - js运行原理与机制
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • php中curl和soap方式请求服务超时问题
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • SQLServer之索引简介
  • vue脚手架vue-cli
  • windows下mongoDB的环境配置
  • 诡异!React stopPropagation失灵
  • 跨域
  • 微信小程序设置上一页数据
  • 一、python与pycharm的安装
  • 优化 Vue 项目编译文件大小
  • 正则表达式
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ​如何使用QGIS制作三维建筑
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (BAT向)Java岗常问高频面试汇总:MyBatis 微服务 Spring 分布式 MySQL等(1)
  • (C11) 泛型表达式
  • (el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
  • (Forward) Music Player: From UI Proposal to Code
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (pojstep1.3.1)1017(构造法模拟)
  • (vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束
  • (二)c52学习之旅-简单了解单片机
  • (二十九)STL map容器(映射)与STL pair容器(值对)
  • (分类)KNN算法- 参数调优
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)Windows2003安全设置/维护
  • (转载)虚函数剖析
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程