SpringBoot_基础

devtools/2025/2/14 5:14:56/

springboot优势:

外部化配置,只要修改配置文件,然后重新启动就行了
不需要大量的配置文件,少量配置文件

配置文件

properties文件

在这里插入图片描述

从配置文件中获取值

在这里插入图片描述
在这里插入图片描述

整合Mybatis

在这里插入图片描述

引入JDBC和mybatis依赖

在这里插入图片描述
配置文件中写:
在这里插入图片描述

Bean管理

Bean扫描

为什么没有配置标签,也没配置扫描注解,也能扫描到我们定义的@Service等东西?
因为@SpringBootApplication注解包含@ComponentScan,它会自动扫描启动类所在包以及子包中的东西。
如果想要扫描指定包下面的东西,可以在启动类上面加上注解
@ComponetScan 来指定扫描包
在这里插入图片描述

Bean注册

在这里插入图片描述
@Repository为访问数据的Dao层上面的注解,但是我们都是使用mybatis,所以还是使用@Mapper注解

第三方对象的管理

如果相对第三方对象(别人写的jar包)进行管理
使用别人的jar包:使用maven安装jar包,然后在本地springboot中的pom文件中引入
在这里插入图片描述

@Bean

在启动类中定义方法并返回对象来注册到Ioc容器中。不建议这么做,应该在配置类中集中注册。
在这里插入图片描述
配置类中注入对象
在这里插入图片描述

细节

如果方法内部要使用ioc容器中已经存在的bean对象,只要在方法上声明,spring会自动注入。
在这里插入图片描述

Import

在启动类上面使用@Import注解
在这里插入图片描述
实现ImportSelector,并重写方法,然后在启动类上面@Import 这个接口实现类,这样做的好处是能代码方式注入多个类
在这里插入图片描述

注册条件

之前使用@Bean和@Import在容器中注册对象,如果想要对对象进行赋值(从配置文件中赋值),那么使用@Value注解
在这里插入图片描述
但是这样有个问题,如果在配置文件中没有定义这些@Value中的值,那么就会报错;
我们应该是如果配置文件中没有定义这个字段那么就应该为null;
这就要使用注册条件
在这里插入图片描述

自动配置原理

我们使用jar包,然后使用@Bean或者@Import,这些其实并不是自动配置;
什么是自动配置?在pom中引入mybatis的时候,自动创建了和mybatis相关的对象。
在这里插入图片描述
面试问自动配置,大概能说配置文件为AutoConfiguration.imports文件就大差不差了
在这里插入图片描述

写一个jar包,并让springboot自动配置

在这里插入图片描述
红色圈标的为步骤
先jar包中自己提供一个配置类
然后jar包中定义个自动配置类,其中写Import
在Springboot的定义文件中写创建自动配置类的类名
本质上还是手写Import注解那一套,只不过是其他人感觉无感。

自定义Starter

为什么要自定义Starter?

在这里插入图片描述

自定义mybatis的starter

在这里插入图片描述
创建一个模块叫autoconfigure,里面只写自动配置类和springboot配置文件
创建一个starter模块,里面只写pom,pom里面引入自动配置模块的坐标+官方建议的自动配置模块的maven中的依赖

别人模块中想要使用你的模块,就只要在pom中导入starter坐标就行了。


http://www.ppmy.cn/devtools/158683.html

相关文章

‌双非硕士的抉择:自学嵌入式硬件开发还是深入Linux C/C++走软开?

今天给大家分享的是一位粉丝的提问,双非硕研一是自学嵌入式走偏硬件还是说深入学习Linuxc/c走软开呢? 接下来把粉丝的具体提问和我的回复分享给大家,希望也能给一些类似情况的小伙伴一些启发和帮助。 粉丝提问: 老师好&#xff…

qt QOpenGLContext详解

1. 概述 QOpenGLContext 是 Qt 提供的一个类,用于管理 OpenGL 上下文。它封装了 OpenGL 上下文的创建、配置和管理功能,使得开发者可以在 Qt 应用程序中以平台无关的方式使用 OpenGL。通过 QOpenGLContext,可以轻松地创建和管理 OpenGL 上下…

FreeRtos实时系统: 十二.FreeRTOS的队列集

FreeRtos实时系统: 十二.FreeRTOS的队列集 一.队列集简介二.队列集相关API函数三.队列集操作实验 一.队列集简介 左边的接收任务会在没接收到队列时会阻塞,如果前面释放信号量这时该任务也获取不到信号量。 右边使用队列集如果获取到,判断句柄是谁&#…

利用爬虫高效获取1688商品详情:案例指南

在电商行业,快速获取商品数据对于市场分析和竞争情报收集至关重要。1688作为国内领先的B2B电商平台,拥有海量的商品信息。通过爬虫技术,我们可以高效地获取这些商品详情数据,为商业决策提供有力支持。 一、为什么选择爬虫技术&am…

三格电子-EtherCAT从站转ModbusTCP主站/从站网关

EtherCAT从站转ModbusTCP主站/从站网关 型号:SG-ECAT_S-TCP 本产品是 EtherCAT 和 Modbus TCP 网关,使用数据映射方式工作。本产品在 EtherCAT 侧作为 EtherCAT 从站,接 TwinCAT、CodeSYS、PLC 等;在 ModbusTCP 侧做为 ModbusTCP …

计算机毕业设计hadoop+spark+hive民宿推荐系统 酒店推荐系统 民宿价格预测 酒店价预测 机器学习 深度学习 Python爬虫 HDFS集群

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

深度学习-医学影像诊断

以下以使用深度学习进行医学影像(如 X 光片)的肺炎诊断为例,为你展示基于 PyTorch 框架的代码实现。我们将构建一个简单的卷积神经网络(CNN)模型,使用公开的肺炎 X 光影像数据集进行训练和评估。 1. 安装必…

Conda 虚拟环境与 venv、virtualenv、pipenv 的对比

1. 引言 在 Python 开发中,虚拟环境是解决不同项目依赖冲突的关键工具。Python 提供了多种虚拟环境管理工具,包括 Conda、venv、virtualenv 和 pipenv。每种工具都有其独特的特点和适用场景。本篇博客将简要对比这些工具,帮助你选择最适合的…