springboot实现自定义start

目录

    • 建项目:
    • 自定义autoconfigure-servicetest
    • 为什么要建META-INF,然后文件spring.factories写的啥
    • 自定义springboot-redis-start
    • 源码学习:

建项目:

比较简单,我写过很多建项目的博客了…
springboot实现自定义start_第1张图片

自定义autoconfigure-servicetest

我打算先实现简单的类的自动注入,然后自己实现一个简单的springboot-redis-start
首先再建个模块,就叫autoconfigure-servicetest好了,同理建一个autoconfigure-redis,web模块里面引入两个新建的模块
然后加上依赖:

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

然后在servicetest里面建一个需要注入到其他工程里面的类,就叫做serviceTest好了,里面就一个方法调用,whoani我是谁?
springboot实现自定义start_第2张图片
然后建个自动装配类:springboot实现自定义start_第3张图片
@Configuration注解表名这是一个配置类,
@ConditionalOnClass表示为只有当ServiceTest存在时才会实例化
@ConditionalOnMissingBean表示容器中没有这个类才会返回这个类,如果有就不加载这个类了
然后在resource下面建META-INF文件夹,然后建个spring.factories文件,然后文件中写上

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.ql.servicetest.ServiceTestAutoConfigure

然后简单的自动装配就完成了,这时候肯定一头雾水,为啥要这么做,我们等下分析,先测试一波:写个简单的测试:
springboot实现自定义start_第4张图片
springboot实现自定义start_第5张图片
成功了,

为什么要建META-INF,然后文件spring.factories写的啥

先看下dubbo-spring-boot-starter
springboot实现自定义start_第6张图片
再看看spring-boot-autoconfigure,就是官方的start
springboot实现自定义start_第7张图片
然后看看spring.factories文件,其实都是跟我们写的一样的配置文件
springboot实现自定义start_第8张图片
都是指定加载的配置文件而已.
图片来自参考:https://www.jianshu.com/p/9e31b4ef2b20
springboot实现自定义start_第9张图片

自定义springboot-redis-start

自定义实现springboot-redis

源码学习:

https://github.com/stackXu/study-authconfigure

你可能感兴趣的:(springboot)