Day14-10.SpringBoot原理-自动配置-案例(自定义starter分析)

Day14-10.SpringBoot原理-自动配置-案例(自定义starter分析)

(1)概述

所谓starter就是指的就是SpringBoot中的起步依赖,在SpringBoot中已经给我们提供了很多的起步依赖了,为什么我们还需要自定义起步依赖呢?因为在实际的开发中,我们可能会用到很多的第三方技术,并不是所有的第三方技术官方都给我们提供了与SpringBoot整合的starter起步依赖,但是这些技术又非常通用,在很多项目组中都在使用。比如前面案例中所使用的阿里云OSS对象存储服务,现在阿里云的官方是没有给我们提供对应的起步依赖的,这个时候使用起来就会比较繁琐,我们需要引入对应的依赖,还需要再配置文件中进行配置,还需要基于官方SDK示例来改造对应的工具类,然后我们在项目中才可以进行使用。想一下,在当前项目中使用阿里云OSS需要这么多操作,在其他的项目呢?所以这个时候我们就可以自定义一些公共组件,在这些公共组件中,就可以把需要提前配置的bean都配置好,将来在项目中要想使用这个技术,直接将组件中对应的坐标直接引入进来就可以直接使用了,我们也可以把这个公共组件提供给别的项目使用,这样就大大简化了我们的开发。在SpringBoot中一般都会将这些公共组件封装为SpringBoot中的Starter,也就是我们说的起步依赖。

我们会发现在这个starter起步依赖中一个Java代码都没有,其实这个starter起步依赖中他就做了一件事情,就是将mybatis开发所需要的这些依赖配置在了配置文件中,这里面所配置的依赖都是mybatis程序在开发时所需要的依赖,而在这些依赖中,有一个依赖比较特殊,叫做mybatis-spring-boot-autoconfigure,这项依赖中就提供了一些自动配置类。在自动配置类中就声明了一些bean对象,比如这里的SqlSessionTemplate这个bean对象。

这些配置类配置好了后,是如何被SpringBoot项目在启动的时候加载到,从而完成自动配置的呢?

前面讲到,SpringBoot在启动的时候会加载一份配置文件,如果是老版本的,他会加载spring.factories这个文件,新版本还会加载autoConfigurationImports这份文件,所以这份配置类配置好了我们就可以在spring.factories或者autoConfigurationImports文件中来配置这个自动配置类,这个自动配置类配置好了后最终就会被加载到并通过@Import这个注解直接加载到Spring的IOC容器当中。

我们看到我们在定义一个起步依赖starter的时候按照规范需要定义两个模块,一个模块是starter这个模块,这个模块中什么也没干,就做了一件事情,就是依赖管理,我们把当前程序开发所需要的所有依赖都定义在了starter起步依赖中,在starter中还引入了一个包,这个包就是autoconfigure这个包,这个包中就来完成自动配置操作,最终在starter当中需要将autoConfigure这个自动配置的包引入进来,将来在项目当中进行对应的功能开发,只需要引入一个起步依赖就可以了,因为他会将autoConfigure自动配置的这个依赖给我传递下来。

(2)自定义starter

需求:自定义aliyun-oss-spring-boot-starter,完成阿里云OSS操作工具类AliyunOSSUtils的自动配置。

目标:引入起步依赖之后,要想使用阿里云OSS,注入AliyunOSSUtils直接使用即可。

步骤:

①:窗帘aliyun-oss-spring-starter模块

②:创建爱你aliyun-oss-spring-boot-autoconfigure模块,在starter中引入该模块

③:在aliyun-oss-spring-boot-autoconfigure模块中定义自动配置功能,并定义自动配置文件META-INF/spring/xxxx.imports

6FM46DY-1719652182443)]

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值