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

news2025/1/12 5:58:26

 一、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 {
    @Override
    public void save() {
        System.out.println("book service is running ...");
    }
}

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

 

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

@SpringBootTest
class Demo4ApplicationTests {
    @Autowired
    private BookService bookService;
    @Test
    void 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.coloradmin.cn/o/1001171.html

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

相关文章

列表对象复制属性到另一个列表对象 从List<Object>另一个List<Object>

目录 事件起因环境和工具解决办法结束语 事件起因 在写一个市级的项目时&#xff0c;遇到了一个问题&#xff0c;这个项目涉及的数据内容非常大&#xff0c;光是数据库文件的大小就已经达到了12G&#xff0c;数据的规模大致是在百万级的&#xff0c;光是我这次参与处理的数据就…

led灯白光和暖光哪个对眼睛好?最适合孩子开学使用的护眼台灯

什么样的光更适合阅读呢&#xff1f;从生物学的角度上讲是早上的自然光。一方面是因为早晨的光照使得人体内在的生物钟和外界24h亮暗循环同步。如果生理节律被打乱&#xff0c;早晨明亮的光照可以帮助恢复正常的生理节律。另一方面是其物理特性&#xff0c;自然光漫射效果较好&…

基于springboot+vue的加盟店管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

零碎改动(ES6+)

这里写自定义目录标题 let 和 const幂运算字符串新增API let 和 const ES6建议不再使用var定义变量&#xff0c;而使用let定义变量&#xff0c;const定义常量 let a 1; // 使用 let 定义变量 a 2; // 变量的值是可修改的const b 1; // 使用 const 定义常量 b 2; // ❌ 报…

4. HBase必知必会之理论基础篇

HBase必知必会理论基础篇 1.1 HBase简介1.2 HBase 数据模型1.3 HBase整体架构1.4 HBase 读写流程1.4.1 客户端读取流程1.4.2 客户端写入流程 1.5 HBase 客户端常用的方法1.5.1 scan查询1.5.2 get查询1.5.3 put查询1.5.4 delete 查询1.5.5 append 查询1.5.6 increment查询 1.6 H…

SB树,看这一篇就够了

算法拾遗三十九SB树及跳表 SB树SB树四种违规类型总结 SB树Code 跳表 SB树 SB树是基于搜索二叉树来的&#xff0c;也有左旋和右旋的操作&#xff0c;只是不同于AVL树&#xff0c;它也有它自己的一套平衡性方法。 任何以叔叔节点为头的子树的节点个数不小于自己任何一个侄子树的…

【PAT】攀拓(PAT)- 程序设计(甲级)2023年夏季考试自测

个人学习记录&#xff0c;代码难免不尽人意。 今天又斥资巨款买了PAT甲级2023年夏季的考试真题做了做&#xff0c;得分 95&#xff0c;还买了时光机&#xff0c;在当时排名42名。总的来说还是比较满意的&#xff01;有些地方当时做的时候卡住了但是后面回过头来重新想的时候还是…

小程序环境搭建

第一种&#xff1a;微信开发者工具 1. 微信公众平台注册小程序 注册类型选择‘个人’即可&#xff0c;‘企业’需要公司相关信息&#xff08;企业信用代码、法人信息等&#xff09; 注册成功后&#xff0c;在‘开发’-‘开发管理’-‘开发设置’中找到AppID 并纪录。 2. …

关于前端就业前景的一点看法

一、前言 最近&#xff0c;很多人在知乎上鼓吹前端未来会没掉的概念。在此我想说这个说法并不真实&#xff0c;而是一种极端的观点。 事实上&#xff0c;前端开发在当今的互联网行业中扮演着至关重要的角色&#xff0c;它是构建 Web 应用程序所必需的一部分&#xff0c;能够实现…

高速电路设计-----第二章

本章主要讲解的是电阻、电容、电感的选型。 一、电阻&#xff1a;关键还是限流。 1、通常在电源滤波时除了LC外&#xff0c;还会串接一个R。目的是为了降低信号的Q值&#xff0c;防止信号失真。常用于失真电源滤波。 2、选型的电阻的封装太小&#xff0c;电路的电流超过电阻能…

让你不再惧怕内存优化

原文链接 让你不再惧怕内存优化 之前曾经写过一篇关于如何做性能优化的文章&#xff0c;现在针对内存这一专项再做精细化的讨论。对于安卓应用开发来说&#xff0c;内存究竟会遇到什么样的问题&#xff0c;有什么方法可以用来测试和分析&#xff0c;以及有什么样的策略可以去实…

【LeetCode-中等题】904. 水果成篮

文章目录 题目方法一&#xff1a;滑动窗口方法二&#xff1a; 题目 题目的意思就是&#xff1a;找至多包含两种元素的最长子串&#xff0c;返回其长度 方法一&#xff1a;滑动窗口 class Solution { // 滑动窗口 找至多包含两种元素的最长子串&#xff0c;返回其长度public …

红队打靶:ConnectTheDots打靶思路详解(vulnhub)

目录 写在开头 第一步&#xff1a;主机发现和端口扫描 第二步&#xff1a;FTP和NFS渗透&#xff08;失败&#xff09; 第三步&#xff1a;web渗透 第四步&#xff1a;jsfuck解码 第五步&#xff1a;再次FTP渗透与莫尔斯电码解码 第六步&#xff1a;vim读取断电swp文件…

数据科学家必备的20个Python库

公众号&#xff1a;尤而小屋作者&#xff1a;Peter编辑&#xff1a;Peter 大家好&#xff0c;我是Peter~ 小屋里面一直在输出关于数据科学领域的文章&#xff0c;绝大部分都是基于Python&#xff0c;少量的MySQL&#xff08;MySQL存储数据用&#xff09;。本文重点给大家介绍P…

保姆级教程 --redis启动命令

1、在redis目录 打开命令 windowr 输入cmd 2、输入 redis-server.exe redis.windows.conf 启动redis命令&#xff0c;看是否成功 3、可能会启动失败&#xff0c;报28 Nov 09:30:50.919 # Creating Server TCP listening socket 127.0.0.1:6379: bind: No error 4、报错后&am…

获取该虚拟机的所有权失败,主机上的某个应用程序正在使用该虚拟机

点击“openstack-controller”虚机 打开出现如下错误&#xff0c;点击“获取所有权” 点击“取消” 这时候不要删除虚拟机&#xff0c;这种错误一般是由于虚拟机没有正常关闭引起的。 找到openstack-controller的虚拟磁盘文件及配置文件存放的位置&#xff0c;删除openstack-…

【系统设计系列】缓存

系统设计系列初衷 System Design Primer&#xff1a; 英文文档 GitHub - donnemartin/system-design-primer: Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards. 中文版&#xff1a; https://github.com/donnemart…

电子信息工程专业课复习知识点总结:(三)数电

绪论 第一章 数字逻辑概论 1.数字集成电路相比模拟电路的优点&#xff1f; ①稳定i性高&#xff0c;抗干扰能力强 ②数字电路只用0和1进行逻辑运算&#xff0c;所以比较容易设计电路。 ③便于集成&#xff0c;体积小、成本低 ④可编程性强&#xff0c;可以使用加密技术提高保…

SQL6 查找学校是北大的学生信息

描述 题目&#xff1a;现在运营想要筛选出所有北京大学的学生进行用户调研&#xff0c;请你从用户信息表中取出满足条件的数据&#xff0c;结果返回设备id和学校。 示例&#xff1a;user_profile iddevice_idgenderageuniversityprovince12138male21北京大学Beijing23214male…

Spring Boot将声明日志步骤抽离出来做一个复用类

上文Spring Boot日志基础使用 设置日志级别中我们写了个比较基本的日志操作 但也随之产生了一个问题 我们这行代码 能不能不写&#xff1f; 具体说 我们不希望每个需要日志的类都声明一个在这 看着太不美观了 我们最简单方法当然是继承 我们找个目录创建一个类 叫 BaseClass…