首页 > 其他分享 >tt

tt

时间:2022-10-01 20:22:33浏览次数:36  
标签:configClass candidate getMetadata tt ImportBeanDefinitionRegistrar currentSource

private void processImports(ConfigurationClass configClass, SourceClass currentSourceClass,			Collection<SourceClass> importCandidates, boolean checkForCircularImports) { 		if (importCandidates.isEmpty()) {			return;		} 		if (checkForCircularImports && isChainedImportOnStack(configClass)) {			this.problemReporter.error(new CircularImportProblem(configClass, this.importStack));		}		else {			this.importStack.push(configClass);			try {				for (SourceClass candidate : importCandidates) {					if (candidate.isAssignable(ImportSelector.class)) {						// Candidate class is an ImportSelector -> delegate to it to determine imports						Class<?> candidateClass = candidate.loadClass();						ImportSelector selector = BeanUtils.instantiateClass(candidateClass, ImportSelector.class);						ParserStrategyUtils.invokeAwareMethods(								selector, this.environment, this.resourceLoader, this.registry);						if (this.deferredImportSelectors != null && selector instanceof DeferredImportSelector) {							this.deferredImportSelectors.add(									new DeferredImportSelectorHolder(configClass, (DeferredImportSelector) selector));						}						else {							String[] importClassNames = selector.selectImports(currentSourceClass.getMetadata());							Collection<SourceClass> importSourceClasses = asSourceClasses(importClassNames);							processImports(configClass, currentSourceClass, importSourceClasses, false);						}					}					else if (candidate.isAssignable(ImportBeanDefinitionRegistrar.class)) {						// Candidate class is an ImportBeanDefinitionRegistrar ->						// delegate to it to register additional bean definitions						Class<?> candidateClass = candidate.loadClass();						ImportBeanDefinitionRegistrar registrar =								BeanUtils.instantiateClass(candidateClass, ImportBeanDefinitionRegistrar.class);						ParserStrategyUtils.invokeAwareMethods(								registrar, this.environment, this.resourceLoader, this.registry);						configClass.addImportBeanDefinitionRegistrar(registrar, currentSourceClass.getMetadata());					}					else {						// Candidate class not an ImportSelector or ImportBeanDefinitionRegistrar ->						// process it as an @Configuration class						this.importStack.registerImport(								currentSourceClass.getMetadata(), candidate.getMetadata().getClassName());						processConfigurationClass(candidate.asConfigClass(configClass));					}				}			}			catch (BeanDefinitionStoreException ex) {				throw ex;			}			catch (Throwable ex) {				throw new BeanDefinitionStoreException(						"Failed to process import candidates for configuration class [" +						configClass.getMetadata().getClassName() + "]", ex);			}			finally {				this.importStack.pop();			}		}	} 

标签:configClass,candidate,getMetadata,tt,ImportBeanDefinitionRegistrar,currentSource
From: https://www.cnblogs.com/little-monster-lhq/p/16747699.html

相关文章

  • Java: Interpreter Pattern
     /***版权所有2022涂聚文有限公司*许可信息查看:*描述:*解释器模式InterpreterPattern*历史版本:JDK14.02*2022-09-12创建者geovindu*2022-0......
  • #yyds干货盘点# 前端歌谣的刷题之路-第九十九题-getter
    前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从......
  • spring boot 使用jetty作为内置服务器
    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>......
  • Netty 学习(六):创建 NioEventLoopGroup 的核心源码说明
    Netty学习(六):创建NioEventLoopGroup的核心源码说明作者:Grey原文地址:博客园:Netty学习(六):创建NioEventLoopGroup的核心源码说明CSDN:Netty学习(六):创建NioEventLoopG......
  • CSharp: Strategy Pattern
     ///<summary>///Asimplefilehandlngclass///StrategyPattern策略模式///20220918///geovindu,GeovinDu,涂聚文///</summary>......
  • 补充HTTP请求常见状态码
           ......
  • Spring MVC入门(七):HttpMessageConverter
    简介HttpMessageConverter,报文信息转换器,将请求报文转换为Java对象,或将Java对象转换为响应报文HttpMessageConverter提供了两个注解和两个类型:@RequestBody,@ResponseBody,Req......
  • mqtt入门(四):客户端sdk
    前言该笔记学习自​​mqtt​​起步导入依赖<dependency><groupId>org.eclipse.paho</groupId><artifactId>org.eclipse.paho.client.mqttv3</artifactId><version>1.2......
  • mqtt入门(二):emqx安装
    前言该笔记学习自​​mqtt​​​​参考1​​​​参考2​​简介产品介绍rpm安装emqx​​​链接​​docker安装emqxdockerpullemqx/emqx:v4.0.5dockerrun-tid--nameemqx......
  • 使用ViewBinding后button按钮失效
    今天学习《第一行代码》时使用ViewBinding代替findViewById(),发现代替以后button无法激活intent,从https://www.jianshu.com/p/86f780f3aabd找到了问题所在问题代码o......