предисловие
Недавно некоторые друзья спросили, будет ли обновлена предыдущая серия исходных кодов Dubbo, и ответили, что она будет обновлена в будущем."Dubbo源码解析系列-plus"
версия. не спрашивайте меня об этомplus
Насколько он велик, на данный момент он не будет слишком большим, чтобы управляться одной рукой.
В дополнение к предыдущим «анализу исходного кода» и «борьбе с исходным кодом» в этом году будет еще одна тема, а именно图解源码
тему фаст-фуда. Я уже публиковал статьюГрафический исходный код | Принцип сопоставления MyBatis
Если вы хотите начать работу и посмотреть исходный код, я думаю, что наиболее подходящим являетсяMybatis
иSpringBoot
, по следующим причинам:
-
热门
.вы проводите с ними даже больше времени, чем ваша девушка -
主流程复杂度不大
.Угадать принципы и идеи дизайна этих двух фреймворков гораздо проще, чем угадать мысли девушек! -
面试要问
.Никто не спрашивает об "откровенности" интервью по коду как если бы еще, наоборот, как и 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-код нижеОбратите внимание на Фей Чао, пусть те, кто должен строить ракеты, перестанут трахаться!