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

网站建设叁金手指花总7网站设计就业怎么样

网站建设叁金手指花总7,网站设计就业怎么样,网络营销类型有哪些,南宁seo网络推广文章目录 一、Spring生命周期核心底层源码剖析—扫描1.1、Spring底层扫描机制doScan方法源码剖析 一、Spring生命周期核心底层源码剖析—扫描 1.1、Spring底层扫描机制doScan方法源码剖析 其源代码如下#xff1a; protected SetBeanDefinitionHolder doScan(Strin… 文章目录 一、Spring生命周期核心底层源码剖析—扫描1.1、Spring底层扫描机制doScan方法源码剖析 一、Spring生命周期核心底层源码剖析—扫描 1.1、Spring底层扫描机制doScan方法源码剖析 其源代码如下 protected SetBeanDefinitionHolder doScan(String... basePackages) {Assert.notEmpty(basePackages, At least one base package must be specified);SetBeanDefinitionHolder beanDefinitions new LinkedHashSet();for (String basePackage : basePackages) {SetBeanDefinition candidates findCandidateComponents(basePackage);//遍历其获取到的BeanDefinition对象for (BeanDefinition candidate : candidates) {//为其BeanDefinition对象进行属性赋值例如scopebeanName等ScopeMetadata scopeMetadata this.scopeMetadataResolver.resolveScopeMetadata(candidate);candidate.setScope(scopeMetadata.getScopeName());String beanName this.beanNameGenerator.generateBeanName(candidate, this.registry);if (candidate instanceof AbstractBeanDefinition) {postProcessBeanDefinition((AbstractBeanDefinition) candidate, beanName);}if (candidate instanceof AnnotatedBeanDefinition) {AnnotationConfigUtils.processCommonDefinitionAnnotations((AnnotatedBeanDefinition) candidate);}//判断当前的bean是否已经在Spring容器中存在存在需封装为BeanDefinitionHolder对象if (checkCandidate(beanName, candidate)) {BeanDefinitionHolder definitionHolder new BeanDefinitionHolder(candidate, beanName);definitionHolder AnnotationConfigUtils.applyScopedProxyMode(scopeMetadata, definitionHolder, this.registry);beanDefinitions.add(definitionHolder);registerBeanDefinition(definitionHolder, this.registry);}}}return beanDefinitions;}1、其主要是通过传入的包路径进行资源加载加载时方法为上诉代码的for循环下的第一行代码的findCandidateComponents()方法可以详细看此方法是如何加载资源的其方法代码如下具体说明以及解析过程可参考注释 public SetBeanDefinition findCandidateComponents(String basePackage) {//此处主要是判断项目是否配置了相关的bean文件若有就不需要再逐个类进行扫描判断是否为Beanif (this.componentsIndex ! null indexSupportsIncludeFilters()) {return addCandidateComponentsFromIndex(this.componentsIndex, basePackage);}//大部分的业务都会走如下方法else {return scanCandidateComponents(basePackage);}}//scanCandidateComponents方法具体实现为 private SetBeanDefinition scanCandidateComponents(String basePackage) {SetBeanDefinition candidates new LinkedHashSet();try {//1、资源路径组装解析String packageSearchPath ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX resolveBasePackage(basePackage) / this.resourcePattern;//2、利用类元数据读取器读取器路径下包含的资源数据Resource[] resources getResourcePatternResolver().getResources(packageSearchPath);boolean traceEnabled logger.isTraceEnabled();boolean debugEnabled logger.isDebugEnabled();//3、遍历类元数据读取器获取到的资源数据class资源文件数据for (Resource resource : resources) {if (traceEnabled) {logger.trace(Scanning resource);}try {//4、获取当前类元数据(calss)具体资源信息MetadataReader metadataReader getMetadataReaderFactory().getMetadataReader(resource);//5、判断当前的类class上包含的是否包含排除注解excludeFilters以及非排除注解includeFilters以及是否包含相关的条件注解Conditionalif (isCandidateComponent(metadataReader)) {//6、创建一个BeanDefinition对象用于封装其类特征信息例如beanClass、scope、lazyInit等属性ScannedGenericBeanDefinition sbd new ScannedGenericBeanDefinition(metadataReader);//7、将类资源数据加入到BeanDefinition中sbd.setSource(resource);//8、判断当前的类资源是否是独立的例如是否是内部类等除此歪需要判断其是否为接口或者抽象类如果是抽象类那类中必须有被Lookup注解的方法否则不会被当做beanif (isCandidateComponent(sbd)) {if (debugEnabled) {logger.debug(Identified candidate component class: resource);}//9、将封装好的BeanDefinition对象加入到返回的集合Set中candidates.add(sbd);}else {if (debugEnabled) {logger.debug(Ignored because not a concrete top-level class: resource);}}}else {if (traceEnabled) {logger.trace(Ignored because not matching any filter: resource);}}}catch (FileNotFoundException ex) {if (traceEnabled) {logger.trace(Ignored non-readable resource : ex.getMessage());}}catch (Throwable ex) {throw new BeanDefinitionStoreException(Failed to read candidate component class: resource, ex);}}}catch (IOException ex) {throw new BeanDefinitionStoreException(I/O failure during classpath scanning, ex);}return candidates;}
http://www.hkea.cn/news/14351508/

相关文章:

  • discuz下载关键词优化怎样
  • 网站自定义301网站开发常用的流程
  • 网站建设培训公司哪家好WordPress个人网站搭建
  • 网站建设 技术指标李炎辉网站建设教程
  • 单页加盟网站模板wordpress主题模板制作教程
  • 网站建设1選宙斯站长水煮鱼 wordpress
  • 网站导航条代码驻马店怎么建设自己的网站
  • 网站开发费用结算苏晋建设集团网站
  • 动漫网站 设计营销策略ppt
  • 网站添加微信支付功能网站添加站长统计代码
  • 全屏网站怎么做重庆网站建设公司推荐
  • php网站做代理wordpress完全删除插件
  • 怎样在网站上做外贸有哪些网站交互效果做的好的
  • 流量网站制作专业网站建设必要性
  • 国外专名做路演的网站win8.1 wordpress
  • wordpress 网站深圳有网络营销吗
  • 丹阳建设局官方网站工商营业执照在线查询
  • 电脑培训班零基础网课网站加速优化
  • 济南做网站的价格wordpress聚合页
  • 做防腐木网站主流跨境电商平台有哪些
  • 网站建设哪些好地接做的网站
  • 河南省网站备案担路网络科技有限公司的证书
  • 目前做哪些网站致富养殖网站源码
  • 高端大气的网站模板小程序可以用手机网站吗
  • 星空传媒有限公司网站怎么套用模板做网站
  • 免费的个人网站html代码怎样通过网络销售自己的产品
  • 网站别人帮做的要注意什么东西用二级域名做的网站算新站吗
  • 微信官方网站是什么营销技巧心得体会
  • 网站的开发流程可以分为哪三个阶段wordpress 文章太多
  • 上海城市建设档案馆网站网页制作与设计是什么