【黑马程序员】Springboot2 学习笔记

news2024/12/23 0:50:58

课程地址

1. Springboot parent和starter区别

  • parent:开发Springboot项目需要继承spring-boot-starter-parent,其中定义了若干个依赖管理(坐标版本号),避免依赖版本冲突
  • starter:开发Springboot项目需要导入坐标时通常导入对应的starter,每个starter根据功能不同,通常包含多个依赖坐标简化配置

2. 配置文件加载优先级

  • .properties > .yml > .yaml
  • 不同配置文件中相同的配置按照加载优先级相互覆盖,不同配置文件中不同配置全部保留。

3. 配置文件属性提示消失解决方案

在这里插入图片描述

4. 读取配置文件属性数据

  • 读取单一属性属性:@Value
@Value("${server.port}")
private String port;
  • 读取全部属性数据:Environment
@Autowired
private Environment env; 
...
sout(env.getProperty("server.port"));
  • 自定义对象封装指定数据(目前常用
    在这里插入图片描述

5. 整合第三方技术

  1. 导入相关依赖(starter)
  2. 配置yml

6. 工程打包与运行

  • mvn clean -> mvn package
  • pom里应包含打包插件spring-boot-maven-plugin
  • java -jar xxxx.jar [(临时属性:)--server.port=8080 --xx=xx] 运行jar文件。
    在这里插入图片描述
    在这里插入图片描述
  • linux系统打包运行暂时跳过!

7. 配置文件4级分类

在这里插入图片描述
多层级配置文件间的属性采用叠加并覆盖的形式作用于程序。

8. 多环境开发

  • 单文件
    在这里插入图片描述

  • 多文件(yml):主文件中设置公共属性,环境分类文件中设置冲突属性
    在这里插入图片描述

  • 多文件(properties)
    在这里插入图片描述

  • 多环境分组管理
    在这里插入图片描述

9. 热部署

  • 手工启动热部署

(1)导入依赖 devtools

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifcatId>spring-boot-devtools</artifactId>
</dependency>

(2)激活热部署(restart):build project (Ctrl + F9)

  • 自动启动热部署
    在这里插入图片描述
    在这里插入图片描述
    激活方式:IDEA失去焦点5s后启动热部署。

10. @ConfigurationProperties 第三方Bean属性绑定

@Bean
@ConfigurationProperties(prefix="datasource")
public DruidDataSource datasource(){
	DruidDataSource ds = new DruidDataSource();
	return ds;
}
  • 宽松绑定属性名可以宽松绑定,但绑定前缀名prefix)必须仅能使用纯小写字母、数字、下划线作为合法字符;
    在这里插入图片描述

  • Bean的属性校验
    (1)导入JSR303和Hibernate校验框架依赖;
    (2)使用@Validated注解启用校验功能;
    (3)使用具体的校验规则规范数据校验格式。

11. web环境模拟测试 webEnvironment =

(1)加载测试专用属性

@SpringBootTest(properties={"test.prop=testvalue1"}, args={"--test.prop=testvalue2"})
public class WebTest {
}

(2)加载测试专用配置

@Import({MsgConfig.class, xxx.class})
public class WebTest {
}

(3)设置测试端口

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
public class WebTest {
	@Test
	void testGetById(){
		xxxxx;
	}
}

(4)模拟测试启动

//开启虚拟MVC调用
@AutoConfigureMockMvc
public class WebTest {
}

(5)模拟测试匹配

@Test
void testGetById(@Autowired MockMvc mvc) throws Exception {
	MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get("/books");
	ResultActions action = mvc.perform(builder);

	// 测试响应状态
	StatusResultMatchers status =  MockMvcResultMatchers.status();
	ResultMatcher ok = status.isOk();
	action.andExpect(ok);

	// 测试响应头
	StatusResultMatchers header=  MockMvcResultMatchers.header();
	ResultMatcher contentType = header.string("Content_Type", "application/json");
	action.andExpect(contentType);

	// 测试响应体,json
	StatusResultMatchers content=  MockMvcResultMatchers.content();
	ResultMatcher result= content.json("{\"id\":1,\"name\":\"wyw\"}");
	action.andExpect(result);
}

(6)测试事务回滚

@Transactional
public class WebTest {
}

12. Springboot整合Redis

  • 导入redis依赖
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
  • 配置redis
spring:
	redis:
		host: 127.0.0.1
		port: 6379
  • 使用RedisTemplate的各种方法操作redis

13. Mongodb

(1)下载与安装(windows)
在这里插入图片描述
在这里插入图片描述
(2)Mongodb基础命令
在这里插入图片描述
(3)Springboot整合Mongodb

  • 导入Mongodb对应依赖
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
  • 配置Mongodb
spring:
	data:
		mongodb:
			uri: mongodb://localhost/itheima
  • 提供操作Mongodb的MongoTemplate
@Autowired
private MongoTemplate mongoTemplate
void test() {
	// 创建插入或查询对象
	Book book = new Book("1", "wyw");
	// 插入数据
	mongoTemplate.save(book);
	// 查询所有
	mongoTemplate.findAll();
}

14. Elasticsearch

(1)下载与安装(windows)
在这里插入图片描述
(2)创建/查询/删除索引(这里索引相当于Mysql中库的概念)
在这里插入图片描述
(3)安装配置IK分词器
在这里插入图片描述
下载、解压缩后放在elasticsearch/plugins目录下。

(4)创建索引并指定规则
在这里插入图片描述

(5)Springboot整合ES

  • 导入ES高阶客户端依赖
<dependency>
	<groupId>org.elasitcsearch.client</groupId>
	<artifactId>elasticsearch-rest-high-level-client</artifactId>
</dependency>
  • IK分词器
    在这里插入图片描述

  • 创建索引
    在这里插入图片描述

  • 批量添加文档
    在这里插入图片描述

  • 按条件查询文档
    在这里插入图片描述

15. Springboot整合RocketMQ

  • 导入RocketMQ依赖
<dependency>
	<groupId>org.apache.rocketmq</groupId>
	<artifactId>rocketmq-spring-boot-starter</artifactId>
	<version>2.2.1</version>
</dependency>
  • 配置RocketMQ
rocketmq:
	name-server: localhost:9876
	producer:
		group: group_rocketmq	# 组必须指定
  • 生产消息(异步)
    在这里插入图片描述
  • 使用消息监听器对消息队列监听
    在这里插入图片描述

16. Springboot整合Kafka

  • 导入Kafka依赖
<dependency>
	<groupId>org.springframework.kafka</groupId>
	<artifactId>spring-kafka</artifactId>
</dependency>
  • 配置Kafka
spring:
	kafka:
		bootstrap-servers: localhost:9092
		consumer:
			group-id: order	# 启动监听必须指定组
  • 生产消息
    在这里插入图片描述
  • 消费消息
    在这里插入图片描述

17. 监控 Springboot Admin

(1)监控的意义
在这里插入图片描述

(2)可视化监控平台——Springboot Admin
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(3)监控原理——Actuator
在这里插入图片描述
在这里插入图片描述

(4)自定义监控指标

  • 为info端点添加自定义指标

在这里插入图片描述

  • 为Health端点添加自定义指标

在这里插入图片描述

  • 为Metrics端点添加自定义指标

在这里插入图片描述

  • 自定义端点

在这里插入图片描述

18. Bean的加载方式

(1)xml + <bean/>

(2)xml:content + 注解 (@Component + 4个@Bean)

(3)配置类 + 扫描 + 注解 (@Component + 4个@Bean)

  • @Bean定义FactoryBean接口
  • @ImportResource
  • @Configuration注解的proxyBeanMethods属性

(4)@Import导入bean的类

  • @Import导入配置类

(5)AnnotationConfigApplicationContext调用register方法

(6)@Import导入ImportSelector接口

(7)@Import导入ImportBeanDefinitionRegister接口

(8)@Import导入BeanDefinitionRegistryPostProcessor接口

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

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

相关文章

提升演讲口才,助青少年踏上成功之路

提升演讲口才&#xff0c;助青少年踏上成功之路 引言&#xff1a; 青少年时期是一个人成长发展的关键阶段&#xff0c;而演讲口才的培养不仅可以帮助他们在学业和职业上取得成功&#xff0c;还能帮助他们塑造自信、提升沟通能力&#xff0c;并在社交场合中脱颖而出。本文将探讨…

springboot在线招聘系统

springboot在线招聘管理系统&#xff0c;java在线招聘管理系统&#xff0c;在线招聘管理系统 运行环境&#xff1a; JAVA版本&#xff1a;JDK1.8 IDE类型&#xff1a;IDEA、Eclipse都可运行 数据库类型&#xff1a;MySql&#xff08;8.x版本都可&#xff09; 硬件环境&#xf…

GDB调试-链接器

GDB&#xff08;GNU Debugger&#xff09;是一个强大的命令行调试工具&#xff0c;用于调试C、C等编程语言的程序。以下是一些常用的GDB调试命令&#xff1a; 一、启动 GDB&#xff1a;打开终端并输入以下命令来启动GDB&#xff0c;并将可执行文件作为参数 gdb ld-new 二、运…

【源码解析】Spring源码解读-beanFactory和Bean的后置处理器流程

上一篇文章&#xff0c;我们详细介绍了spring是如何通过加载xml配置文件&#xff0c;将beanfactry创建成功的&#xff0c;接着核心流程&#xff0c;我们继续说下beanFactory和Bean的后置处理流程。 //留给子类的模板方法&#xff0c;允许子类继续对工厂执行一些处理&#xff1b…

二、【海报合成的创意】

文章目录 多分析他人海报&#xff0c;逐渐学会生成自己的创意关键词创意寻找素材寻找创意灵感的网站 那么如何快速生成创意&#xff1f; 多分析他人海报&#xff0c;逐渐学会生成自己的创意 关键词创意 从上图中我们可以看到&#xff0c;该海报中主要突出的主体是耳机。突出的…

【Git企业开发】第一节.Git 的分支管理

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;Git企业级开发 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01;&#xff0…

java后端返回数据给前端时去除值为空或NULL的属性、忽略某些属性

目录 一、使用场景 二、环境准备 1、引入依赖 2、实体类 三、示例 1、不返回空值 (1)方式 (2)测试 (3)说明 2、不返回部分属性 (1)方式 (2)测试 一、使用场景 在开发过程中&#xff0c;有时候需要将后端数据返回前端&#xff0c;此时有些数据为空属性不需要返回&…

SSM度假村管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 SSM 度假村管理系统是一套完善的信息系统&#xff0c;结合SSM框架完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要 采用B/S模式开发…

[LaTeX] [数学符号] \mathbb{1}的各种替代方案:解决在 LaTeX 中输入黑板粗体的数字

[LaTeX] [数学符号] \mathbb{1}的各种替代方案&#xff1a;解决在 LaTeX 中输入黑板粗体的数字_latex mathbb-CSDN博客文章浏览阅读5w次&#xff0c;点赞36次&#xff0c;收藏80次。本文介绍如何在 LaTeX 中输入黑板粗体的数字。_latex mathbbhttps://blog.csdn.net/xovee/arti…

FRP内网穿透(待续)

FRP内网穿透技术原理&#xff1a; FRP可以将内网服务主机以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。 1.GITHUB下载FRP 2.云服务器安装FRP修改配置 3.本地计算机安装FRP修改配置

R-FCN: Object Detection via Region-based Fully Convolutional Networks(2016.6)

文章目录 AbstractIntroduction当前最先进目标检测存在的问题针对上述问题&#xff0c;我们提出... Our approachOverviewBackbone architecturePosition-sensitive score maps & Position-sensitive RoI pooling Related WorkExperimentsConclusion 原文链接 源代码 Abstr…

iOS的应用生命周期以及应用界面

在iOS的原生开发中&#xff0c;我们需要特别关注两个东西&#xff1a;AppDelegate和ViewController。我们主要的编码工作就是在AppDelegate和ViewControlle这两个类中进行的。它们的类图如下图所示&#xff1a; AppDelegate是应用程序委托对象&#xff0c;它继承了UIResponder类…

业务设计——责任链验证推翻 if-else 炼狱

责任链模式 1. 什么是责任链模式 在责任链模式中&#xff0c;多个处理器依次处理同一个请求。一个请求先经过 A 处理器处理&#xff0c;然后再把请求传递给 B 处理器&#xff0c;B 处理器处理完后再传递给 C 处理器&#xff0c;以此类推&#xff0c;形成一个链条&#xff0c;链…

Proteus仿真--左右来回流水灯仿真(仿真文件+程序)

本文主要介绍基于51单片机的流水灯仿真&#xff08;完整仿真源文件及代码见文末链接&#xff09; 仿真运行视频 Proteus仿真--基于51单片机的流水灯仿真&#xff08;左右来回&#xff09; 附完整Proteus仿真资料代码资料 百度网盘链接: https://pan.baidu.com/s/1pS1rHGOhwYgP…

springboot+vue基于协同过滤算法的私人诊所管理系统的设计与实现【内含源码+文档+部署教程】

博主介绍&#xff1a;✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久&#xff0c;选择我们就是选择放心、选择安心毕业✌ &#x1f345;由于篇幅限制&#xff0c;想要获取完整文章或者源码&#xff0c;或者代做&am…

MySQL Server 5.5 软件和安装配置教程

MySQL 5.5.58&#xff08;32/64位&#xff09;下载链接&#xff1a; 百度网盘&#xff1a;百度网盘 请输入提取码 提取密码&#xff1a;7act 软件简介&#xff1a; MySQL 是由瑞典MySQL AB 公司开发一个关系型数据库管理系统&#xff0c;目前属于 Oracle 旗下产品。MySQL 是最…

15KW永磁同步电动机设计

摘 要 在我们日常生活中&#xff0c;永磁同步电机随处可见&#xff0c;因为其相比其他电机而言结构相对简单&#xff0c;运行稳定且便于维修等优势&#xff0c;最重要的是永磁同步电机在调速方面具有很好的优势。随着自动控制技术和微电子技术的不断革新&#xff0c;目前的技术…

她从家乡自贡起步,努力奋斗进京任职

读罢“北京文博”于2023年10月14日发表的新闻报道《文明互鉴 文明共兴——2023国际城市媒体北京论坛在京举行》&#xff0c;心中甚为欣慰。因为当年从笔者家乡走出去的70后女青年吴旭&#xff0c;现在令人惊喜地已经成长为中华全国新闻工作者协会党组成员、中宣部对外推广局局长…

高等数学前置知识——一次函数

文章目录 一次函数1.1 一次函数1.2 正比例函数1.3 一次函数的平移1.4 一次函数常用知识 一次函数 1.1 一次函数 一次函数的定义为&#xff1a;y kx b &#xff0c;k ≠ 0。 ​ 注&#xff1a;在这个函数中k代表斜率&#xff0c;b代表与y轴的截距。当 x 0 时&#xff0c;y…

挖坑法,Hoare,非递归法实现快速排序

时间&#xff1a;O(N*lgn)->最坏n^2(有序&#xff0c;逆序) 空间&#xff1a;logN N*2 Hoare Hoare法与其他快速排序算法的不同之处在于它使用两个指针&#xff08;分别指向数组的起始位置和结束位置&#xff09;&#xff0c;并通过交换元素的方式来确定基准值的最终位置。…