write your own xx-starter【1】

2024-08-29 02:44
文章标签 write starter xx

本文主要是介绍write your own xx-starter【1】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在springboot 中,我们加入例如mybatis-spring-boot-starter,接着在application.yml配置数据库信息,就可以使用mybatis了,无需我们手动进行配置

这就是springboot威力,那么他是如何实现的呢?简单来说类似于java SPI机制, 通过在启动容器的某个阶段,加载某个路径下特殊文件中的类来实现自动配置
在这里插入图片描述
实际上这个文件就是位于META-INF/spring.factories
我们可以看到内容为k=v的形式,k为org.springframework.boot.autoconfigure.EnableAutoConfiguration
v为配置类,多个以逗号隔开

其中我们看到MybatisAutoConfiguration的全类名
在这里插入图片描述
打开我们发现在MybatisAutoConfiguration上面有很多注解
@Configuration 表示是一个配置
@ConditionalOnClass 注入条件——类路径包含某个类情况
@ConditionalOnSingleCandidate 注入条件——表示存在某个类型的唯一bean
@EnableConfigurationProperties 启用对@ConfigurationProperties的支持,一般他俩一起使用来读取配置文件(application.yml)中的信息
@AutoConfigureAfter确保某个配置类在其他配置类之后加载

这些条件注解,决定了bean要不要加载到spring 容器中,以及加载顺序

在这个类中有一些bean配置
在这里插入图片描述

看到例如sqlSessionTemplate 和sqlSessionFactory等我们常用的bean, 原来都在这里给我们配置好了

看到这里我们就大致明白了,其实就是xxx-starter在背后帮我们做了一些工作

总的来说springboot自动去获取spring.factories中的自动配置类信息,进行扫描,被扫描的配置类根据项目环境条件注入bean

细心的朋友还可以发现其实上面的spring.factories和MybatisAutoConfiguration都在mybatis-spring-boot-autoconfigurer中,我们项目一般依赖的是mybatis-soring-boot-starter,其实是为了职责清晰,starter中只包含pom文件pom文件又依赖autoconfigurer而已

关于何时去扫描的这些配置类,答案在springboot的启动流程里,想了解的可以自行学习

下一篇实现一个自定义的starter, 其实就是仿照框架而已

这篇关于write your own xx-starter【1】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1116622

相关文章

解决mybatis-plus-boot-starter与mybatis-spring-boot-starter的错误问题

《解决mybatis-plus-boot-starter与mybatis-spring-boot-starter的错误问题》本文主要讲述了在使用MyBatis和MyBatis-Plus时遇到的绑定异常... 目录myBATis-plus-boot-starpythonter与mybatis-spring-b

Unstructured cannot write mode RGBA as JPEG 错误解决

Unstructured cannot write mode RGBA as JPEG 错误解决 0. 错误详细1. 解决方法 0. 错误详细 Image Extraction Error: Skipping the failed imageTraceback (most recent call last):File "/root/miniconda3/envs/learn-y

70-java write类应用场景

在Java中,我们可以使用java.io包中的FileWriter和BufferedWriter类来写入数据到文件。以下是一个简单的例子,展示了如何使用FileWriter和BufferedWriter来写入数据到文件: import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;pub

nexus3.XX的下载安装和配置

nexus的下载: 官方地址:http://www.sonatype.com/download-oss-sonatype 百度网盘:http://pan.baidu.com/s/1eSBeid0 下载完成后,将nexus解压到指定位置:(如d:\nexus3) nexus的安装: 开始 -> 运行 -> cmd install  安装 uninstall 卸载 此

SylixOS write 0 字节问题

1 问题描述 在移植中间件过程中,在SylixOS调用write函数写入0字节的数据到文件中时,会导致对应的中间件测试用例失败,失败的原因是文件系统中的write函数在Linux系统和SylixOS有区别,两种实现的差别如下。 2 write函数的实现机制 2.1 SylixOS实现机制 在SylixOS下通过write 函数写数据到普通文件中时,第一步会判断写入的数据是否为0,如果是0直

Java 入门指南:Java 并发编程 —— Copy-On-Write 写时复制技术

文章目录 Copy-On-Write使用场景特点缺点CopyOnWrite 和 读写锁相同点之处不同之处 CopyOnWriteArrayList适用场景主要特性方法构造方法CopyOnWriteArrayList 使用示例 CopyOnWriteArraySet适用场景主要特性方法构造方法使用注意事项CopyOnWriteArraySet 使用示例 Copy-On-Writ

df.write.csv

# 将 DataFrame 写入 CSV 文件# 拆分 ArrayType 列df_exploded = df.withColumn("interests", explode("interests"))print("\nExploded DataFrame:")df_exploded.show(truncate=False)# 写入 CSV 文件df_exploded.write.csv

redis被攻击redis READONLY You can‘t write against a read only slave.

redis 日志路径 /var/log/redis 拿下来后发现有这种错误 Operation now in progress 可能是网络断开导致, 查找redis whereis redis 修改 vim /etc/redis.conf 大概在300行 下面代码yes改no slave-read-only no 重启redis sudo systemctl restart

【Starter 】Spring Boot 3.x 自定义封装Starter 实战

【Starter 】Spring Boot 3.x 自定义封装Starter 实战 Starter 背景简介及作用 什么是 Starter Starter 是 Spring Boot 中的一项创新发明,它的主要作用是降低项目开发中的复杂性,从而简化开发操作。通过使用 Starter,开发人员可以轻松地引入常用的库和配置,避免了繁琐的手动设置。 Starter 的理念:Starter 会将项

Failed to resolve: com.android.support:appcompat-v7:xx.+

1、错误信息 Error:(26, 13) Failed to resolve: com.android.support:appcompat-v7:27.+ 2、环境描述 Android Studio 2.3.3 如下图所示 注意:支持的Android SDK Tools 是 25.2.4 3、场景复现 导致这个问题时本人用Android Studio 2.3.3 创建一