Графический исходный код Принцип автоматической настройки в SpringBoot

Java
Графический исходный код Принцип автоматической настройки в SpringBoot

предисловие

Недавно некоторые друзья спросили, будет ли обновлена ​​предыдущая серия исходных кодов Dubbo, и ответили, что она будет обновлена ​​в будущем."Dubbo源码解析系列-plus"версия. не спрашивайте меня об этомplusНасколько он велик, на данный момент он не будет слишком большим, чтобы управляться одной рукой.

В дополнение к предыдущим «анализу исходного кода» и «борьбе с исходным кодом» в этом году будет еще одна тема, а именно图解源码тему фаст-фуда. Я уже публиковал статьюГрафический исходный код | Принцип сопоставления MyBatis

Если вы хотите начать работу и посмотреть исходный код, я думаю, что наиболее подходящим являетсяMybatisиSpringBoot, по следующим причинам:

  1. 热门.вы проводите с ними даже больше времени, чем ваша девушка

  2. 主流程复杂度不大.Угадать принципы и идеи дизайна этих двух фреймворков гораздо проще, чем угадать мысли девушек!

  3. 面试要问.Никто не спрашивает об "откровенности" интервью по коду как если бы еще, наоборот, как и SpringBoot, который делает много автоматически настраиваемых "полуприкрытых" интервью по дизайну, принцип всегда подхватывается, как только он всплывает. , Блестяще.

Сразу к делу

Когда дело доходит до SpringBoot, первое, что приходит на ум, это часто автоматическая настройка.Есть два распространенных метода автоматической настройки.

1.@EnableXXX

Например@EnableCaching

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
//导入指定配置类
@Import(CachingConfigurationSelector.class)
public @interface EnableCaching {
	//...省略
}

Преимущество этого в том, что когда вы полагаетесь наstarter, вы можете выбрать, следует ли включитьstarterНекоторые параметры для автоматической настройки в этом@EnableXXXСо слова знаешь, что есть переключатель

2.META-INF/spring.factories

Например, Spring.factories по умолчанию в SpringBoot

# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\
org.springframework.boot.autoconfigure.aop.AopAutoConfiguration,\
org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration,\
org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration,\
org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration,\

//省略

Преимущество этого в том, что когда вы полагаетесь наstarterавтоматически включить его для васstarterНекоторые параметры, которые помогут вам настроить автоматически.

Поскольку то, что я делаю в компании, это инфраструктура, я использую их обе, конечно, вторая используется больше, потому что все зависят от вашей.starterПочаще, я хочу, чтобы вы выполнили полный набор операций.Тогда поговорим о том, как делается эта автоматическая настройка

Графический исходный код

Простое текстовое объяснение:

В первую очередь нужно обобщить свои знания.Например,что означает красный прямоугольник на моей картинке?Тогда надо сначала понятьImportSelectorчто это

//自定义逻辑返回需要导入的组件
public class MyImportSelector implements ImportSelector {

    /**
     * @param importingClassMetadata 当前标注@Import注解的类的所有注解信息
     * @return 导入到容器中的组件全类名
     */
    public String[] selectImports(AnnotationMetadata importingClassMetadata) {
        return new String[]{"com.toby.register.bean.Colour"};
    }
}

Проще говоря, дайте мне полное имя класса компонента, и я помогу вам инициализировать эти несколько bean-компонентов.Это то же самое, что и настройка bean-компонентов в Spring xml.Разница в том, что этот метод может настраивать и создавать bean-компоненты во время работы с кодом. ..Итак, подытожим, в чем принцип этой автоматической настройки?

1. Запустите основную функцию и загрузите@SpringBootApplication

2.@SpringBootApplicationполучитеMETA-INF/spring.factoriesПолное имя класса, который необходимо автоматически настроить в

3. Введите полное имя автоматически сконфигурированного класса вImportSelector, тем самым создавая класс автоматической настройки, и по логике в классе автоматической настройки выполняется соответствующая автоматическая настройка

напиши в конце

Feichao — это технический публичный аккаунт, в котором основное внимание уделяется принципам, исходному коду и навыкам разработки, оригинальному тематическому анализу исходного кода в аккаунте и реальному сражению принципов исходного кода в реальных сценах (ключевые моменты).Отсканируйте QR-код нижеОбратите внимание на Фей Чао, пусть те, кто должен строить ракеты, перестанут трахаться!