springboot
文章平均质量分 79
sinat_33472737
这个作者很懒,什么都没留下…
展开
-
spring扫描bean以及mybatis扫描mapper对应的bean
ClassPathBeanDefinitionScanner#doScan(String… basePackages):在指定的基本程序包中执行扫描,返回已注册的bean定义。此方法不注册一个注解配置处理器而是让这件事给调用者。 protected Set<BeanDefinitionHolder> doScan(String... basePackages) { Assert.notEmpty(basePackages, "At least one base package must原创 2022-05-09 14:30:54 · 861 阅读 · 0 评论 -
ConfigurationClassPostProcessor流程图解
原创 2022-05-08 21:27:12 · 244 阅读 · 0 评论 -
自定义springboot starter
源码githubpom <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId>原创 2022-05-06 17:04:50 · 279 阅读 · 0 评论 -
springboot starter原理简单介绍
原理简单概述springboot 各种starter简单来说就是为了加载各种依赖包中配置类@Configuration,这些配置类必须在模块的resources/META-INF 目录下spring.factories文件中键为org.springframework.boot.autoconfigure.EnableAutoConfiguration对应的值中声明因为我们不可能在启动类中声明扫描的包包含所有依赖包的配置类@Configuration,那样不现实。所以spring就提供了一种机制来加载这原创 2022-05-06 14:30:43 · 316 阅读 · 0 评论 -
spring @Import介绍
文档翻译指示要导入的一个或多个组件类——通常是@Configuration类。提供与 Spring XML 中<import/>元素等效的功能。允许导入@Configuration类、 ImportSelector和ImportBeanDefinitionRegistrar实现,以及常规组件类(从 4.2 开始;类似于AnnotationConfigApplicationContext.register )何时解析@Import答:处理配置类时。具体代码分析如下:Configurat原创 2022-05-05 21:34:05 · 364 阅读 · 0 评论 -
ConfigurationClassPostProcessor
文档翻译用于对@Configuration类进行引导处理。此后处理器按优先级排序,因为在任何其他BeanFactoryPostProcessor执行之前, @Configuration类中声明的任何Bean方法都必须注册其对应的Bean定义,这一点很重要。作为BeanDefinitionRegistryPostProcessor的扩展回调@Override public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry原创 2021-02-06 20:22:14 · 184 阅读 · 0 评论 -
springboot2.1.7启动 AbstractApplicationContext refresh(三)
目录registerListeners()finishBeanFactoryInitialization(beanFactory)finishRefresh()registerListeners()检查侦听器bean并注册它们。 protected void registerListeners() { // Register statically specified listeners first. for (ApplicationListener<?> lis原创 2021-01-28 00:32:42 · 149 阅读 · 1 评论 -
springboot2.1.7启动 AbstractApplicationContext refresh(二)
invokeBeanFactoryPostProcessors(beanFactory)调用在上下文中注册为bean的工厂处理器。(实例化并调用所有注册的BeanFactoryPostProcessor Bean,并遵循显式顺序(如果给定的话)。必须在单例实例化之前调用) protected void invokeBeanFactoryPostProcessors(ConfigurableListableBeanFactory beanFactory) { PostProcessorRegis原创 2021-01-27 13:59:07 · 203 阅读 · 0 评论 -
springboot2.1.7启动 AbstractApplicationContext refresh(一)
prepareRefresh()准备此上下文以进行刷新,设置其启动日期和活动标志以及执行属性源的任何初始化。ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory()告诉子类刷新内部bean工厂。beanFactory为DefaultListableBeanFactory。prepareBeanFactory(beanFactory)配置工厂的标准上下文特征(设置beanFactory的各种属性) p原创 2021-01-25 22:34:10 · 148 阅读 · 1 评论 -
springboot2.1.7启动分析(三)SpringApplication run
context = createApplicationContext();因为时servlet,所以会去实例化org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext这个context 。GenericApplicationContext是其父类,所以会执行GenericApplicationContext无参构造函数,这就是我们看到的ApplicationContext原创 2021-01-21 10:03:09 · 438 阅读 · 0 评论 -
springboot2.1.7启动分析(二)SpringApplication run
SpringApplicationRunListeners listeners = getRunListeners(args); private SpringApplicationRunListeners getRunListeners(String[] args) { Class<?>[] types = new Class<?>[] { SpringApplication.class, String[].class }; return new SpringApp..原创 2021-01-18 16:58:13 · 323 阅读 · 0 评论 -
springboot2.1.7启动分析(一)SpringApplication实例化
public SpringApplication(ResourceLoader resourceLoader, Class<?>... primarySources) { this.resourceLoader = resourceLoader; Assert.notNull(primarySources, "PrimarySources must not be null"); this.primarySources = new LinkedHashSet<>(Arr..原创 2021-01-17 23:29:17 · 264 阅读 · 0 评论