SpringBoot学习笔记(项目创建,yaml,多环境开发,整合mybatis SMM)

 一、SpringBoot入门

1.1 SpringBoot概述

SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。

Spring程序缺点:配置繁琐,依赖设置繁琐。SpringBoot程序优点:自动装配,起步依赖(简化依赖配置),赋值功能(内置服务器)。

版本管理:以后不需要管版本,只需要告诉是SpringBoot几,就自动将所有最佳组合的版本配合在一起做好。

依赖管理:所有的依赖SpringBoot都已经自动装配好。

起步依赖

starter:SpringBoot中创建项目名称,定义了当前项目使用的所有项目坐标,以达到减少依赖配置的目的。

parent:所有SpringBoot项目要继承的项目,定义了若干个坐标版本号(依赖管理,而非依赖),以达到减少依赖冲突的目的。

 Springboot简化了SpringMVC的开发: 

 核心功能是靠下面的继承来实现

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.1.3</version><relativePath/> <!-- lookup parent from repository -->
</parent>

1.2 项目创建与启动

第1步:新建Maven项目(或项目),选择Spring初始化,并配置模块相关信息

注意选择Spring Initializr;Package name后面的后缀要删掉,和Group保持一致;

第2步:选择当前模块需要使用的技术集,勾选Spring Web

第3步:开发控制器类,在java下面创建controller然后新建类BookController,在里面编写代码如下

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

第4步:然后右键下面的文件运行,启动:

1.3 项目.jar包运行

Maven中点击Package会将项目打成一个.jar包:

 

右键.jar包点击Open in 点击Explorer:

在搜索栏中输入cmd,然后输入java -jar,输入一个s然后点击Tab键就可以自动补全,然后点击运行即可:

依赖的是下面的插件:

1.4 配置文件书写格式

想改变端口号:

1. 在application.properties里写入:

server.port=80

 2. 在resources下创建application.yml【主要书写方式】里写入下面代码,注意port:后面有一个空格:

server:port: 80

3. 在application.yaml里写入如下代码:

server:port: 80

自动提示功能消失解决方案:

生效顺序:properties > yml > yaml 

二、yaml

2.1 yaml格式

YAML(YAML Ain't Marku Language)是一种数据序列化格式。

优点:容易阅读。容易与脚本语言交互。以数据为核心,重数据轻格式。

YAML文件拓展名:.yml(主流)、.yaml

yaml语法规则:

层级关系用冒号结束;以缩进表示层级关系(类似python);在属性后面要添空格;大小写敏感

2.2 yaml数据读取

方法1:使用@Value读取单个数据

方法2:全部封装到nvironment对象

 方法3:自定义对象封装指定数据

三、多环境开发

3.1 配置问题

在.yml和.yaml中按照如下方式书写,可以切换不同的环境,输入profile选第1个就行,输入port选第1个填入端口后即可:

在properties文件中的书写按照如下方式:

 

3.2 命令行启动参数设置

打包之前先执行clean

在后面加上:--spring.profiles.active=环境名 ,可以使用不同的环境启动。

如果想更改启动.jar包的端口也是可以的,只需要在后面加上 : --server.port=端口号。

还可以进行累加,例如下面采用88端口以test的环境启动:

3.3 兼容问题

以maven为主,boot为辅,以maven控制版本,然后让boot加载maven的版本。

假如maven是pro生效,SpringBoot是dev生效,那么最终是用dev:

首先要在Maven中设置多环境,boot中要读取引用Maven中设置的多环境:

 

在打包之前需要导入下面的插件,需要将占位符解析,将<useDefaultDelimiters>里面的值改为true。

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>3.2.0</version><configuration><encoding>UTF-8</encoding><useDefaultDelimiters>true</useDefaultDelimiters></configuration>
</plugin>

3.4 配置文件分类

IDEA的resources下的config里的配置文件优先级是第3级:

 

在jar包目录下写一个配置文件,可以覆盖IDEA里的配置文件,优先级是第2级:

还可以在jar包目录下写一个config配置文件,是第1级:

四、SpringBoot整合

4.1 整合junit

首先要搞清楚什么是要写的,什么是不要写的。大家写得一样的是不用写的。

首先在java下面创建BookService接口:

public interface BookService {public void save();
}

然后在service下面创建impl包,然后再impl包下面创建BookServiceImpl类,写入如下代码:

@Service
public class BookServiceImpl implements BookService {@Overridepublic void save() {System.out.println("book service is running ...");}
}

在测试类里写入如下代码:

 

只需要加入@Autowired注解,把要测试的资源注入进去,然后直接使用即可:

@SpringBootTest
class Demo4ApplicationTests {@Autowiredprivate BookService bookService;@Testvoid contextLoads() {bookService.save();}
}

在java类下面的这个类相当于配置类:

 ’

会自动加载同层目录下的文件,如果不在同层目录,就需要自己指定:

4.2 整合mybatis

1. 新建全新项目,注意更改依赖:

2. 创建domain-Book,在里面写入实体类:

3. 创建dao-BookDao数据层接口,写SQL语句

4. 将更改.properties文件为.yml,书写jdbc配置:

5. 在测试类中写测试方法:

6. 可以指定数据源,导入依赖,然后再.yml文件中指定type

<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.16</version>
</dependency>

 

4.3 基于SpringBoot整合实现SSM

1. 新建一个项目,同上:

2. 导入druid坐标,编写配置类.yml格式,同上:

3. config包可以删掉,dao包中的BookDao要加一个@Mapper注解,其余不变:

 

4. 编写测试类;复制静态页面放在static页面下:

5. 启动java下的启动类:

即可正常展示:

五、心得总结

5.1 学习复盘

待写...

5.2 面试真题

1. springboot优点,技术选型原因,为什么不用其他框架?为什么要使用SpringBoot做开发?与传统的开发有什么不一样的?

2. spring boot中的控制反转?

3. SpringBoot的启动类上要加什么注解?这个注解的原理?SpringBoot的启动原理?

4. Spring Boot的自动装配流程?SpringBoot自动配置原理?

5. SpringbootApplication是如何实现依赖注入的?

6. springboot框架url映射过程?

7. 聊聊Springboot与SpringCloud的区别?

8. 在Spring boot的一个请求中,如何实现并发?

9. Springboot如何开发一个http接口?

10. return model过程?

5.3 常见问题

1. 如果端口号没能更改成功,要检查启动的是否是正确的项目:

2. 如果因为中文导致无法打包或者乱码的按下面方式处理:

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

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

相关文章

linux安装postgresql13

linux安装postgresql13 1. 安装postgresql131.1 安装1.2. 数据库初始化1.3.配置远程访问1.3.1 修改配置文件1.3.2 重启服务1.3.3 测试连接 1.4 卸载 2. 安装Postgis2.1 安装2.2 为数据库添加postgis2.2.1 查看文件2.2.2 为数据库添加postgis2.2.3 创建操作系统用户 3. 安装pgAd…

文件上传漏洞案例

目录 1.案例一 1&#xff09;案例源码 2&#xff09;创建web.php文件 3&#xff09;使用抓包软件 2.案例二 1&#xff09;案例代码 2&#xff09; 案例分析 3&#xff09;copy命令生成图片马 4&#xff09;上传图片马到服务器 5&#xff09;解析 文件图片 3.案例三 …

阿里云2核4G服务器5M带宽5年费用价格明细表

阿里云2核4G服务器5M带宽可以选择轻量应用服务器或云服务器ECS&#xff0c;轻量2核4G4M带宽服务器297元一年&#xff0c;2核4G云服务器ECS可以选择计算型c7、c6或通用算力型u1实例等&#xff0c;买5年可以享受3折优惠&#xff0c;阿腾云分享阿里云服务器2核4G5M带宽五年费用表&…

分布式AKF拆分原则

目录 1 前言2 什么是AKF3 如何基于 AKF X 轴扩展系统&#xff1f;4 如何基于 AKF Y 轴扩展系统&#xff1f;5 如何基于 AKF Z 轴扩展系统&#xff1f;6 小结 1 前言 当我们需要分布式系统提供更强的性能时&#xff0c;该怎样扩展系统呢&#xff1f;什么时候该加机器&#xff1…

驱动开发--day2(内核不同模块的相互访问、字符设备驱动、led控制实验代码及现象)

实现三盏灯的控制&#xff0c;编写应用程序测试 head.h #ifndef __HEAD_H__ #define __HEAD_H__#define LED1_MODER 0X50006000 #define LED1_ODR 0X50006014 #define LED1_RCC 0X50000A28#define LED2_MODER 0X50007000 #define LED2_ODR 0X50007014#endif mychrdev.c #inc…

YOLOv5算法改进(16)— 增加小目标检测层

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。小目标检测层是指在目标检测任务中用于检测小尺寸目标的特定网络层。由于小目标具有较小的尺寸和低分辨率&#xff0c;它们往往更加难以检测和定位。YOLOv5算法的检测速度与精度较为平衡&#xff0c;但是对于小目标的检测效…

电容笔值不值得买?开学季比较好用的电容笔

眼看着新学期即将到来&#xff0c;到底应该选择什么样的电容笔&#xff1f;一款原装的苹果Pencil&#xff0c;就卖到了将近一千块&#xff0c;这对于很多人来说&#xff0c;都是一个十分昂贵的价格。事实上&#xff0c;由于平替电容笔的价格非常便宜&#xff0c;只要一二百元就…

Shell命令管理进程

Shell命令管理进程 列出进程 ps命令 top命令 管理后台进程 启动后台进程 查看后台进程 jobs和ps的区别 停止进程 Linux除了是一种多用户操作系统之外&#xff0c;还是一种多任务系统。多任务意味着可以同时运行多个程序。Linux 提供了相关的工具来列出运行中的进程,监视…

库的相关操作

目录 一、创建数据库 1&#xff0c;创建数据库规则 2、创建案例 二、字符集和校验规则 1、查看系统默认字符集以及校验规则 2、查看数据库支持的字符集以及校验规则 3、校验规则对数据库的影响 三、操纵数据库 1、查看数据库和目前所在数据库 2、显示创建语句 3、修改数据库 4、…

windows环境下node安装教程(超详细)

安装node.js 1、下载node: 下载地址&#xff1a;下载 | Node.js 中文网 node.js的zip包安装时是直接解压缩后就可以了, node.js的msi包是傻瓜式一路next就可以了 选择一中方式就可以 2、解压后的目录,或者mis安装后的目录如下: 3、安装完后&#xff0c;可以在命令行中输入…

c高级day4(9.11)shell脚本(case ....in语句,循环语句,select ...in和case...In结合,辅助控制关键字,函数)

1.实现一个对数组就和的函数&#xff0c;数组通过实参传递给函数 2.写一个函数&#xff0c;输出当前用户的uid和gid&#xff0c;并使用变量接收结果 #!/bin/bash read -a arr sum0 function add() { …

【易盾点选】

拿官网的点选做个例子吧&#xff0c;比较省事&#xff0c;水一篇~ ​ 官网的接口目前都改成V3了&#xff0c;多了个dt参数&#xff0c;以及加密的一个函数也变动了下 点选坐标在这&#xff0c;加密函数未变&#xff0c;用逗号拼接 整个加密里的函数变了&#xff0c;直接重新…

RedisJava基础代码实现

Jedis快速入门 <!--jedis--> <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.7.0</version> </dependency> <!--单元测试--> <dependency><groupId>org.ju…

人工智能AI 全栈体系(一)

第一章 神经网络是如何实现的 这些年人工智能蓬勃发展&#xff0c;在语音识别、图像识别、自然语言处理等多个领域得到了很好的应用。推动这波人工智能浪潮的无疑是深度学习。所谓的深度学习实际上就是多层神经网络&#xff0c;至少到目前为止&#xff0c;深度学习基本上是用神…

华为云云耀云服务器L实例评测|有关华为云云耀云服务器L实例你可能不知道的事情

前言 最近华为云推出了华为云云耀云服务器L实例。主打一个轻量级云服务器&#xff0c;即开即用&#xff0c;轻松运维&#xff0c;开启简单上云第一步。具有智能不卡顿&#xff0c;价优随心用&#xff0c;上手更简单&#xff0c;管理特省心。 在推出的第一时间我就买了一台来耍…

C高级day4

一、实现一个对数组求和的函数&#xff0c;数组通过实参传递给函数 二、写一个函数&#xff0c;输出当前用户的uid和gid&#xff0c;并使用变量接收结果 三、XMind思维导图

23062C++QTday4

仿照string类&#xff0c;完成myString 类 代码&#xff1a; #include <iostream> #include <cstring> using namespace std; class myString {private:char *str; //记录c风格的字符串int size; //记录字符串的实际长度public://无参构造my…

【MySQL系列】视图特性

「前言」文章内容大致是MySQL事务管理。 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 视图1.1 视图概念1.2 创建视图1.3 修改互相影响1.4 删除视图1.5 视图规则和限制 视图 1.1 视图概念 视图是一个虚拟表&#xff0c;其内容由查询定义同真实的表一样…

零基础教程:使用yolov8训练无人机VisDrone数据集

1.准备数据集 1.先给出VisDrone2019数据集的下载地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1e2Q0NgNT-H-Acb2H0Cx8sg 提取码&#xff1a;31dl 2.将数据集VisDrone放在datasets目录下面 2.数据集转换程序 1.在根目录下面新建一个.py文件&#xff0c;取名叫…