目录

  • 建项目:
  • 自定义autoconfigure-servicetest
  • spring.factories
  • springboot自动装配详解
  • 自定义实现springboot-redis
  • 源码学习:


建项目:

比较简单,我写过很多建项目的博客了…

springboot实现自定义start_redis

自定义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_redis_02


然后建个自动装配类:

springboot实现自定义start_redis_03

@Configuration注解表名这是一个配置类,
@ConditionalOnClass表示为只有当ServiceTest存在时才会实例化
@ConditionalOnMissingBean表示容器中没有这个类才会返回这个类,如果有就不加载这个类了

然后在resource下面建META-INF文件夹,然后建个spring.factories文件,然后文件中写上

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

然后简单的自动装配就完成了,这时候肯定一头雾水,为啥要这么做,我们等下分析,先测试一波:写个简单的测试:

springboot实现自定义start_spring_04


springboot实现自定义start_自定义_05


成功了,

spring.factories

先看下dubbo-spring-boot-starter

springboot实现自定义start_spring_06


再看看spring-boot-autoconfigure,就是官方的start

springboot实现自定义start_redis_07


然后看看spring.factories文件,其实都是跟我们写的一样的配置文件

springboot实现自定义start_redis_08


都是指定加载的配置文件而已.

图片来自参考:https://www.jianshu.com/p/9e31b4ef2b20

springboot实现自定义start_自定义_09

springboot自动装配详解

自定义实现springboot-redis

源码学习:

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