• 如何寻找Springboot自动装配的实现


    序言:

    springboot框架价值,可以简单快速的构建独立的spring生产级别应用。springboot主要有以下的特性:

    • 1 创建独立的Spring应用
    • 2 直接嵌入Tomcat 等Web容器(不需要部署WAR文件)
    • 3 提供固化的“starter”依赖,简化构建配置
    • 4 当条码满足时自动装配Spring 货第三方类库
    • 5 提供运维的特性,如指标信息,健康检查和外部配置
    • 6 不需要XML配置。

    下面就以spring boot启动的时候,是如何实现mybatis 自动装配

    1 从程序的使用去入手分析

    •   引入mybatis的starter依赖和相关的数据库驱动
    1.       <dependency>
    2.             <groupId>org.mybatis.spring.boot</groupId>
    3.             <artifactId>mybatis-spring-boot-starter</artifactId>
    4.             <version>2.2.0</version>
    5.       </dependency>
    • 程序使用
    1. //程序的启动类
    2. @SpringBootApplication
    3. public class HelloApplication {
    4. public static void main(String[] args) {
    5. SpringApplication.run(HelloApplication.class, args);
    6. }
    7. //服务类
    8. @Service
    9. public interface UserService {
    10. @Autowired
    11. private UserXmlMapper userXmlMapper;
    12. @Test
    13. public void testFindAll2() {
    14. List list = userXmlMapper.findAll();
    15. System.out.println(list);
    16. }
    17. }
    18. //Dao 操作
    19. @Mapper
    20. public interface UserXmlMapper {
    21. public List findAll();
    22. }

    上面的代码,大家都是很熟悉的,springboot是如何实现 @Mapper的注解,就可以操作数据库呢(就是中间有个桥梁,如何将springboot和mybatis连接起来的,而这个桥梁是如何实现的呢)

    •  从启动类 寻找桥梁

     通过源码可以知晓 

    桥梁 = @SpringBootApplication=>@EnableAutoConfiguration=>@Import({AutoConfigurationImportSelector.class})

    分析源码可知AutoConfigurationImportSelector的主要作用 

    • 扫描classpath下所有的jar包
    • 在META-INF/spring.factories配置好的AutoConfiguration
    • 扫描出来需要执行的AutoConfguration

    回想再使用mybatis的时候,是需要引入mybatis的starter依赖包的,再结合AutoConfigurationImportSelector的第二点功能,可以到对应的jar下找到mybatis的AutoConfguration。

     也就是说spring-boot启动【会创建个spring容器】的时候,会去执行 MybatisAutoConfiguration的逻辑【处理 @Mapper 的类(扫描出来注入到srping 容器)和数据库连接等功能】。

    关于MybatisAutoConfiguration的具体功能的逻辑,这块是设计到spring 源码的了。有兴趣的可以自行查找。

  • 相关阅读:
    IP代理中的动态轮换住宅代理是什么?有何作用?
    Kafka - 3.x Kafka命令行操作
    图片采集下载
    各中间件性能、优缺点对比
    postgis 地理化函数
    数据分析笔记1
    图库 | 图存储的基础概念
    鸿蒙HarmonyOS实战-ArkUI事件(触屏事件)
    国产8K摄像机记录中国航展的飞速发展
    3D游戏建模师职业现状:大学生毕业就是失业,真的这么可怕吗
  • 原文地址:https://blog.csdn.net/vipshop_fin_dev/article/details/126441002