SpringBoot

文章目录

  • 创建SpringBoot项目
  • 快速入门
    • 创建Controller
    • 启动项目
  • 打包项目
    • 创建工件
  • SpringBoot概述
    • SpringBoot优点
    • 起步依赖
    • 切换Web服务器
  • 配置文件
    • 配置文件
      • application.properties
      • application.yml
      • application.yaml
    • 三种配置文件优先级
    • yaml格式
    • 读取配置数据(yml为例)
      • 简单类型
      • Environment对象
      • 自定义对象
  • SpringBoot整合Junit
  • SpringBoot整合mybatis

创建SpringBoot项目

选择Spring Initializt创建项目
创建web项目的话要勾选web的依赖
启动类可以直接启动项目

快速入门

创建Controller

@RestController
@RequestMapping("/books")
public class BookController {
    @GetMapping("/{id}")
    public String getById(@PathVariable Integer id){
        System.out.println("id ==> "+id);
        return "hello , spring boot!";
    }
}

@RestController是将@Controller和@ResponseBody的作用整合

  • @Controller是Spring中@Component注解的一种类型,将类标记为Bean注入到IOC容器中统一管理
  • @ResponseBody是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区
    @RequestMapping注解是一个用来处理请求地址映射的注解,可用于映射一个请求或一个方法,可以用在类或方法上。
  • 标注在方法上,表示在类的父路径下追加方法上注解的地址将会调用该方法
  • 标注在类上,表示类中的所有响应请求的方法都是以该地址作为父路径
  • @RequestMapping 的 value 属性是通过当前请求的请求地址来匹配请求**(必须设值)**
  • @RequestMapping的method属性是通过当前请求的请求方式来匹配请求
  • @RequestMapping的params属性是通过当前请求的请求参数来匹配请求

  • @GetMapping:处理get方式请求的映射
    • @GetMapping就相当于@RequestMapping(method=RequestMethod.GET),它会将get映射到特定的方法上。
  • @PostMapping:处理post方式请求的映射
  • @PutMapping:处理put方式请求的映射
  • @DeleteMapping:处理delete方式请求的映射

@PathVariable 可以将 URL 中占位符参数绑定到控制器(controller)处理方法的形参中:

  • URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx“) 绑定到操作方法的形参中。

@RequestParam用于将指定的请求参数赋值给方法中的形参

  • 如果参数前写了@RequestParam(xxx),那么前端必须有对应的xxx名字才行
  • 需要在处理URL的控制方法中获取URL中的参数,也就是?key1=value1&key2=value2这样的参数列表

启动项目

在这里插入图片描述
运行该启动类即可——自动使用tomcat服务器

打包项目

创建工件

在这里插入图片描述
在这里插入图片描述
要选择启动类
在这里插入图片描述
出现在target中了
转到对应路径下运行jar包

xxx.jar包下中没有主清单属性解决办法:
在这里插入图片描述
pom.xml中对应位置,删除该行即可,重新打包jar文件,重新运行
在这里插入图片描述
重新运行,成功!
在这里插入图片描述

SpringBoot概述

SpringBoot优点

  • 自动配置。这个是用来解决 Spring 程序配置繁琐的问题
  • 起步依赖。这个是用来解决 Spring 程序依赖设置繁琐的问题
  • 辅助功能(内置服务器,…)。我们在启动 SpringBoot 程序时既没有使用本地的 tomcat 也没有使用tomcat 插件,而是使用 SpringBoot 内置的服务器。

起步依赖

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.0</version>
</parent>

使用它之后,常用的包依赖可以省去 version 标签
spring-boot-starter-parent指定父工程spring-boot-dependencies
spring-boot-dependencies中含有properties定义了各个技术软件依赖的版本,避免了使用不同软件技术时考虑版本兼容问题

切换Web服务器

将tomcat切换为jetty

  • 使用exclusions排除tomcat服务器
  • 引入jetty的依赖
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
	<exclusions>
		<exclusion>
			<artifactId>spring-boot-starter-tomcat</artifactId>
			<groupId>org.springframework.boot</groupId>
		</exclusion>
	</exclusions>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>

配置文件

配置文件

resources下

application.properties

server.port为端口号(默认为8080)

application.yml

删除application.properties,创建application.yml
格式如下:

server:
	port: 81

application.yaml

删除application.properties,创建application.yaml

server:
	port: 83

可在项目结构中的Facet中选择Spring设置 配置文件

三种配置文件优先级

properties>yml>yaml

yaml格式

lesson: SpringBoot
	
server:
	port: 80
		
enterprise:
	name: itcast
	age: 16
	tel: 4006184000
	subject:
		- Java
		- 前端
		- 大数据

读取配置数据(yml为例)

简单类型

可直接用@Value进行读取

@Value("${enterprise.subject[0]}")
private String subject_00;

Environment对象

使用 @Autowired 注解注入 Environment 对象的方式读取数据。这种方式 SpringBoot 会将配置文件中所有的数据封装到 Environment 对象中,如果需要使用哪个数据只需要通过调用Environment 对象的getProperty(String name) 方法获取

@RestController
@RequestMapping("/books")
public class BookController {
	@Autowired
	private Environment env;
	@GetMapping("/{id}")
	public String getById(@PathVariable Integer id){
		System.out.println(env.getProperty("lesson"));
		System.out.println(env.getProperty("enterprise.name"));
		System.out.println(env.getProperty("enterprise.subject[0]"));
		return "hello , spring boot!";
	}
}

自定义对象

将实体类 bean 的创建交给 Spring 管理。

  • 在自定义的实体类上添加 @Component 注解
    使用 @ConfigurationProperties 注解表示加载配置文件
  • 在该注解中也可以使用 prefix 属性指定只加载指定前缀的数据
  • @ConfigurationProperties(prefix = "enterprise")

在Controller类中直接用@Autowired注入该对象
pom.xml中需要加入如下依赖

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-configuration-processor</artifactId>
	<optional>true</optional>
</dependency>

SpringBoot整合Junit

  1. 在测试类上添加 SpringBootTest 注解
  2. 使用 @Autowired 注入要测试的资源
  3. 定义测试方法进行测试
@SpringBootTest
class Springboot07TestApplicationTests {
	@Autowired
	private BookService bookService;

	@Test
	public void save() {
		bookService.save();
	}
}

SpringBoot整合mybatis

在这里插入图片描述

  1. 重点为配置处:application.yml
spring:
	datasource:
		driver-class-name: com.mysql.jdbc.Driver
		url: jdbc:mysql://localhost:3306/xxx
		username: root
		password: root
		type: com.alibaba.druid.pool.DruidDataSource
  • 还需要加入依赖
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>druid</artifactId>
	<version>1.1.16</version>
</dependency>
  1. 需要将Dao上加上@Mapper
@Mapper
public interface BookDao {
	@Select("select * from tbl_book where id = #{id}")
	public Book getById(Integer id);
}
  1. Dao的对象直接使用@Autowired即可自动装配

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

windows系统管理_Windows server 2016 组管理与授权

组账户的概述 在 windows 服务器中&#xff0c;当我们需要为多个用户设置相同的权限时&#xff0c;一个一个的逐一设置会比较 麻烦&#xff0c;这个时候我们就需要用到另一种模式&#xff0c;组账户&#xff0c;使用此账户来进行简化操作。 在以后的职场中&#xff0c;每家公司…

Windows环境下调试DAB-DETR与Deformable-DETR

先前都是在服务器上运行DETR的相关程序&#xff0c;服务器使用的是Linux&#xff0c;所以运行较为简单&#xff0c;但如果想要简单的debug的话就没必要使用服务器了&#xff0c;今天便来在Winodws环境下调试DETR类项目&#xff0c;这里以Deformable-DETR与DAB-DETR为例。 首先是…

I.MX6U开发板使用OTG烧写系统

1.系统烧写 在实际的产品开发中肯定不可能通过网络来运行&#xff0c;否则没网的时候产品岂不 是就歇菜了。因此我们需要将 uboot、linux kernel、.dtb(设备树)和 rootfs 这四个文件烧写到板子 上的 EMMC、NAND 或 QSPI Flash 等其他存储设备上&#xff0c;这样不管有没有网络我…

R语言ggplot2 | 绘制随机森林重要性+相关性热图

&#x1f4cb;文章目录 原图复现准备数据集及数据处理构建不同分类随机森林模型的并行计算绘制随机森林变量重要性柱状图计算数据集的相关性热图可视化合并随机森林重要性和热图 附上所有代码 在文献中&#xff0c;我们经常遇到随机森林和相关性热图的组合图片(下图)&#xff0…

Vue3——一文入门Vue3

Vue3的优势 1. 性能的提升 打包大小减少41% 初次渲染快55%&#xff0c;更新渲染快133% 内存减少54% … 2. 源码的升级 使用Proxy代替defineProperty实现响应式 重写虚拟DOM的实现和Tree-Shaking … 3. 拥抱TypeScript Vue3可以更好的支持TypeScript 4. 新的特性 1.C…

什么是文件共享软件?文件传输软件如何共享?

它是一个文件共享软件应用程序&#xff0c;可让强大的数据保护层下将任何大小的文件发送到世界上的任何地方。以光速发送和共享无限数量的文件。可以提交门户并使用语言&#xff0c;品牌&#xff0c;存储等自定义门户。可以选择一个存储点&#xff0c;例如文件传输软件&#xf…

零基础可以学习数据分析吗,有没有好的培训机构推荐?

数据分析从沿海火到了中西部的软件园&#xff0c;从传统互联网企业火到了新经济领域&#xff0c;火到了第一二产业。数字化成为这个时代的标签&#xff0c;而数据也成为了最有价值的资源&#xff0c;更多企业重视数据&#xff1b;因为有了真实数据的支撑&#xff0c;所有的决策…

【软考备战·希赛网每日一练】2023年4月19日

文章目录 一、今日成绩二、错题总结第一题第二题第三题 三、知识查缺 题目及解析来源&#xff1a;2023年04月19日软件设计师每日一练 一、今日成绩 二、错题总结 第一题 解析&#xff1a; 第二题 解析&#xff1a; server-side n.服务器端 enterprise n.企业 client n.客户 d…

常见排序算法

目录 一、插入排序 1、直接插入排序 2、希尔排序(缩小增量插入排序&#xff09; 二、选择排序 三、堆排序 四、冒泡排序 五、快速排序&#xff08;递归&#xff09; 1、交换法 2、挖坑法 3、前后指针法&#xff08;推荐&#xff09; 4、快排再优化 六、快速排序&…

树上差分(点差分/边差分)

树上差分一般有两种类型的题目&#xff0c;一种是对边进行差分&#xff0c;另一种就是对点进行差分。 对应的操作也有两种&#xff0c;对边进行差分的对应操作就是给定一对节点(u,v)&#xff0c;让我们把u到v之间路径上的边权都加val&#xff0c;对点进行差分的对应操作就是给…

MYSQL数据库

目录 SQL SQL-DDL 操作数据库 查询&#xff08;show&#xff09;&#xff08;select&#xff09; 创建&#xff08;create&#xff09; 删除&#xff08;drop&#xff09; 操作表 查询当前数据库所有表 修改表 删除 SQL-DML 添加数据&#xff08;可以批量添加&…

课程简介:.Net Core从零学习搭建权限管理系统

课程简介目录 &#x1f680;前言一、课程背景二、课程目的三、系统功能四、系统技术架构五、课程特点六、课程适合人员七、课程规划的章节八、最后 &#x1f680;前言 本文是《.Net Core从零学习搭建权限管理系统》教程专栏的导航站&#xff08;点击链接&#xff0c;跳转到专栏…

做好Python工程师,首先你需要做好的几件事

做好Python工程师&#xff0c;需要做好的几件事&#xff0c;我想分享给大家。首先千万不要做事周折。在你提问之前&#xff0c;先好好想一想&#xff0c;这个问题自己能不能解决。如果能解决&#xff0c;尽量自己解决&#xff1b;如果解决不了&#xff0c;那就要把你的问题描述…

亿发软件:传统食品饮料批发行业如何通过信息化管理系统降本增效?

传统食品饮料批发行业信息化水平较低&#xff0c;存在多重管理难题&#xff0c;例如&#xff1a; 手动数据输入和管理&#xff0c;导致错误和效率低下&#xff1b; 数据缺乏实时可见性&#xff0c;无法实时了解企业仓库存量、销售额和其他关键业务指标&#xff1b; 低效的供应链…

索引:索引知识重复习,什么是索引、索引的类型、建立索引及【最左匹配原则】、Explain查看sql的执行计划

文章目录 什么是索引索引的类型主键索引&#xff08;primary key&#xff09;普通索引&#xff08;index&#xff09;复合索引全文索引&#xff08;fulltext&#xff09;空间索引唯一索引索引修改及删除 Explain一、using filesort(减慢查询效率)二、Using temporary三、using …

前端UI框架有哪些|20个优秀免费开源的WEB前端UI框架提高网站开发效率

最近准备学习一下前端UI我也是在网上找了很久最终整理出来了20个不错的前端UI框架网站,大家都知道很多成熟的前端框架可以直接引,学习框架可以提升我们网站的开发速度。有些大型公司的前端或者后端框架都是用自己开发的,对于大部分用户和公司来讲,我们可以用开源免费的前端…

Python 中 SyntaxError: ‘yield‘ outside function 错误

当我们在函数外部使用 yield 关键字时&#xff0c;会出现 Python “SyntaxError: ‘yield’ outside function”。 要解决该错误&#xff0c;如果我们需要对每个元素执行一些运算符&#xff0c;请使用列表理解&#xff0c;或者缩进函数内部使用 yield 的代码。 下面是一个产生…

毕业2年,跳槽到下一个公司就25K了,厉害了···

本人本科就读于某普通院校&#xff0c;毕业后通过同学的原因加入软件测试这个行业&#xff0c;角色也从测试小白到了目前的资深工程师&#xff0c;从功能测试转变为测试开发&#xff0c;并顺利拿下了某二线城市互联网企业的Offer&#xff0c;年薪 30W 。 选择和努力哪个重要&a…

写博客8年与人生第一个502万

题记&#xff1a;我们并非生来强大&#xff0c;但依然可以不负青春。 原本想好好写一下如何制定一个目标并通过一点一滴的努力去实现&#xff0c;这三年反思发现其实写自己的经历并不重要。 很多人都听过一句话&#xff1a;榜样的力量是无穷的。 更现实和实际的情况是&#x…

mysql聚合函数

文章目录 前言一、常见的聚合函数1.avg和sum函数2.max和min函数3.count函数 二、group by的使用1.基本使用方法2.with rollup 求平均值 三、having关键字的使用四、多表连接聚合函数1.sql92语法总结2.sql99语法总结 总结 前言 聚合函数&#xff1a;他是对一组数据进行汇总的函…