当前位置: 首页 > news >正文

建设网站要做的工作内容发帖推广哪个平台好

建设网站要做的工作内容,发帖推广哪个平台好,深圳 网站开发公司电话,龙岩网站建设较好的公司此注解是springboot自动注入的关键注解,所以拿出来单独分析一下。 启动类的run方法跟进去最终找到refresh方法; 这里直接看这个org.springframework.context.support.AbstractApplicationContext#refresh方法即可,它下面有一个方法 invoke…

此注解是springboot自动注入的关键注解,所以拿出来单独分析一下。

启动类的run方法跟进去最终找到refresh方法;

这里直接看这个org.springframework.context.support.AbstractApplicationContext#refresh方法即可,它下面有一个方法

invokeBeanFactoryPostProcessors(beanFactory)

此处, 最终调用的是:

org.springframework.context.support.PostProcessorRegistrationDelegate#invokeBeanFactoryPostProcessors方法;

在这里就不做详细的每一步分析了,直接找起作用的代码了。

它下面有一段如下代码:

// First, invoke the BeanDefinitionRegistryPostProcessors that implement PriorityOrdered.
String[] postProcessorNames =beanFactory.getBeanNamesForType(BeanDefinitionRegistryPostProcessor.class, true, false);

断点可以看到

 在加上代码的注释,此时第一步调用了获取实现BeanDefinitionRegistryPostProcessor的接口的类的方法,可以看到此时只有一个类,即ConfigurationClassPostProcessor类,它是由容器初始化的时候指定加载的bean定义,用来扫描springboot注解配置的相关属性类;

所以此时就会调用其的processConfigBeanDefinitions方法,此方法中有一个

parser.parse(candidates)

最终调用的方法中会有如下代码

// Process any @Import annotations
processImports(configClass, sourceClass, getImports(sourceClass), filter, true)

可以看到,到此处的时候,才会去加载@Import注解,但在此之前程序会扫描@Component、@PropertySources@ComponentScans注解

此时,读取到相应的实现import引入的类的selectImports方法,即可执行相关的配置属性;在执行的时候有一个判断:

if (candidate.isAssignable(ImportSelector.class)) {
}else if (candidate.isAssignable(ImportBeanDefinitionRegistrar.class)) {
}

即使用Import注解时,其类必须实现ImportSelector接口或者ImportBeanDefinitionRegistrar接口;

然后调用其selectImports方法或者registerBeanDefinitions方法,这里ImportSelector还有一个子接口即:DeferredImportSelector接口

那么在这个三者之间存在什么关系?

if (selector instanceof DeferredImportSelector) {
this.deferredImportSelectorHandler.handle(configClass, (DeferredImportSelector) selector);
}

如果实现了DeferredImportSelector接口,它会将其放入一个DeferredImportSelectorHandler中,不会立马执行;而如果是ImportSelector接口,则会直接调用其方法。如果是ImportBeanDefinitionRegistrar接口,则会添加到ConfigurationClass#importBeanDefinitionRegistrars属性中,他是一个map。

所以,ImportSelector接口会直接执行方法,其他两种都会延迟执行加载,那么延迟到什么时候呢?

1)对于DeferredImportSelector接口,则是parse方法的最后一步:

this.deferredImportSelectorHandler.process()

此时才会去执行实现ImportBeanDefinitionRegistrar接口的方法;

此时要注意,ImportBeanDefinitionRegistrar接口内部有一个Group接口,当getImportGroup方法不返回null时,此时就不会执行其selectImports接口了,此时会调用Group下的process方法;此处在后面会使用到;

ImportSelectorDeferredImportSelector的区别,就是selectImports方法执行时机有差别,在DeferredImportSelector之前会对@ImportResource、@Bean这些注解进行处理。

2)对于ImportBeanDefinitionRegistrar接口,

在上面的parse方法执行完之后,会有如下方法:

this.reader.loadBeanDefinitions(configClasses)

此时会执行ImportBeanDefinitionRegistrar接口的方法;

所以最终的执行时机为:

ImportSelector接口的优先级高于DeferredImportSelector接口的执行时机;

DeferredImportSelector接口的优先级高于ImportBeanDefinitionRegistrar接口的执行时机。

http://www.shuangfujiaoyu.com/news/8783.html

相关文章:

  • 大连网站建站地推接单在哪个平台找
  • 专门做自驾游攻略的网站我要登录百度
  • 网站 地区加关键词360安全网址
  • php企业网站源码 漂亮全网推广代理
  • 如何做淘宝客网站推广google 推广优化
  • 新华路网站建设网站定制开发
  • 网站设计的一般步骤是什么?余姚网站seo运营
  • 做一个多肉网站可以做哪些内容seo技术大师
  • 网站后台上传文章怎么做有域名和服务器怎么建网站
  • 网页打不开pdf文件怎么办百度seo快速排名优化服务
  • word 关于做网站外贸推广引流
  • 品牌塑造的六个步骤刷关键词排名seo
  • 有经验的合肥网站建设企业网站设计模板
  • wordpress发文章后显示两篇株洲seo排名
  • 网站开发人员工具重庆高端网站seo
  • 邯郸做网站就找安联网络做网站推广需要多少钱
  • wordpress密码进入网站株洲seo推广
  • java和php做网站cba排名
  • 怎么用html做图片展示网站seo主管招聘
  • 新疆建设云网站报备seo优化方案策划书
  • php做网站csdn淘宝运营
  • 成都网站建设公司是什么意思淘宝优化标题都是用什么软件
  • 福建漳州网站建设费用百度浏览器在线打开
  • 成都公司做网站的长沙网站seo优化公司
  • 建设网站的条件山东今日头条新闻
  • 档案网站开发网站建设方案内容
  • wordpress网站源码上传百度推广如何代理加盟
  • 怎么样自己制作网站竞价交易
  • 网站后台登录ip限制网络营销企业案例分析
  • 网站群建设规划方案种子搜索神器网页版