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

网站手机页面做多大百度网盘人工申诉电话

网站手机页面做多大,百度网盘人工申诉电话,有哪些做数据比较好的网站,做网页网站 的公司SpringBoot是对Spring的一种扩展#xff0c;其中比较重要的扩展功能就是自动装配#xff1a;通过注解对常用的配置做默认配置#xff0c;简化xml配置内容。本文会对Spring的自动配置的原理和部分源码进行解析#xff0c;本文主要参考了Spring的官方文档。 自动装配的组件 …SpringBoot是对Spring的一种扩展其中比较重要的扩展功能就是自动装配通过注解对常用的配置做默认配置简化xml配置内容。本文会对Spring的自动配置的原理和部分源码进行解析本文主要参考了Spring的官方文档。 自动装配的组件 SpringBoot自动装配通过多部分组件协调完成这些组件主要有下面几种这几种组件之间协调工作最终完成了SpringBoot的自动装配。 EnableAutoConfiguration用于根据用户所引用的jar包自动装配Spring容器比如用户在ClassPath中包含了HSQLDB但是没有手动配置数据库连接那么Spring会自动使用HSQLDB作为数据源。 Condition不同情况下按照条件进行装配Spring的JdbcTemplate是不是在Classpath里面如果是并且DataSource也存在就自动配置一个JdbcTemplate的Bean ComponentScan扫描指定包下面的Component注解的组件。 EnableAutoConfiguration注解 Spring的自动装配发展大致可以分为三个阶段 全手工配置的XML文件阶段用户需要的Bean全部需要在XML文件中声明用户手工管理全部的Bean。 半手工配置的注解阶段用户可以安装需求Enable对应的功能模块如添加EnableWebMvc可以启用MVC功能。 全自动配置的SpringBoot用户只需要引入对应的starter包Spring会通过factories机制自动装配需要的模块。 全手工配置的XML文件示意图 xml手工装配 半自动注解配置示意图 半自动配置 全自动注解配置示意图 全自动配置 Spring启用全自动配置功能的注解就是EnableAutoConfiguration应用添加了EnableAutoConfiguration注解之后会读取所有jar包下面的spring.factories文件获取文件中配置的自动装配模块然后去装配对应的模块。 EnableAutoConfiguration的功能可总结为使Spring启用factories机制导入各个starter模块的配置。 原理分析 通过上面的分析我们知道Spring的EnableAutoConfiguration主要功能是使Spring启用factories机制导入各个starter模块的配置。下面我们会对EnableAutoConfiguration的源码进行简单分析。 Target({ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) Documented Inherited AutoConfigurationPackage Import({AutoConfigurationImportSelector.class}) public interface EnableAutoConfiguration { String ENABLED_OVERRIDE_PROPERTY spring.boot.enableautoconfiguration; Class?[] exclude() default {}; String[] excludeName() default {}; } EnableAutoConfiguration注解的定义有两部分比较重要的内容 AutoConfigurationPackage将添加该注解的类所在的package作为自动配置package进行管理。 Import({AutoConfigurationImportSelector.class})用于导入factories文件中的AutoConfiguration。 Import({AutoConfigurationImportSelector.class}) 首先我们需要知道Import注解的作用从字面意思就可以看出来Import用于把一个Bean注入到Spring的容器中Import可以导入三种类型的Bean 导入普通的Bean通常是Configuration注解的Bean也可以是任意的Component组件类型的类。 导入实现了ImportSelector接口的BeanImportSelector接口可以根据注解信息导入需要的Bean。 导入实现了ImportBeanDefinitionRegistrar注解的Bean ImportBeanDefinitionRegistrar接口可以直接向容器中注入指定的Bean。 Import({AutoConfigurationImportSelector.class})中的AutoConfigurationImportSelector实现了ImportSelector接口会按照注解内容去装载需要的Bean。 public String[] selectImports(AnnotationMetadata annotationMetadata) { if (!this.isEnabled(annotationMetadata)) { return NO_IMPORTS; } else { // 获取需要自动装配的AutoConfiguration列表 AutoConfigurationImportSelector.AutoConfigurationEntry autoConfigurationEntry this.getAutoConfigurationEntry(annotationMetadata); // 获取自动装配类的类名称列表 return StringUtils.toStringArray(autoConfigurationEntry.getConfigurations()); } } // 获取需要自动装配的AutoConfiguration列表 protected AutoConfigurationImportSelector.AutoConfigurationEntry getAutoConfigurationEntry(AnnotationMetadata annotationMetadata) { if (!this.isEnabled(annotationMetadata)) { return EMPTY_ENTRY; } else { // 获取注解中的属性 AnnotationAttributes attributes this.getAttributes(annotationMetadata); // 获取所有META-INF/spring.factories中的AutoConfiguration类 ListString configurations this.getCandidateConfigurations(annotationMetadata, attributes); // 删除重复的类 configurations this.removeDuplicates(configurations); // 获取注解中Execlud的类 SetString exclusions this.getExclusions(annotationMetadata, attributes); this.checkExcludedClasses(configurations, exclusions); // 移除所有被Exclude的类 configurations.removeAll(exclusions); // 使用META-INF/spring.factories中配置的过滤器 configurations this.getConfigurationClassFilter().filter(configurations); // 广播相关的事件 this.fireAutoConfigurationImportEvents(configurations, exclusions); // 返回符合条件的配置类。 return new AutoConfigurationImportSelector.AutoConfigurationEntry(configurations, exclusions); } } AutoConfigurationPackage AutoConfigurationPackage用于将添加该注解的类所在的package作为自动配置package进行管理听起来是不是和ComponentScan功能有所重复我们来分析一下其具体实现可以看到这个注解依旧是通过Import注解向容器中注册Bean。 Target({ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) Documented Inherited Import({Registrar.class}) public interface AutoConfigurationPackage { String[] basePackages() default {}; Class?[] basePackageClasses() default {}; } AutoConfigurationPackage注解导入了Registrar.class其本质是一个ImportBeanDefinitionRegistrar会把当前注解类所在的包注入到Spring容器中。 static class Registrar implements ImportBeanDefinitionRegistrar, DeterminableImports { Registrar() { } public void registerBeanDefinitions(AnnotationMetadata metadata, BeanDefinitionRegistry registry) { AutoConfigurationPackages.register(registry, (String[])(new AutoConfigurationPackages.PackageImports(metadata)).getPackageNames().toArray(new String[0])); } public SetObject determineImports(AnnotationMetadata metadata) { return Collections.singleton(new AutoConfigurationPack
http://www.dnsts.com.cn/news/231871.html

相关文章:

  • 哈尔滨企业建站系统云相册网站怎么做的
  • 西安建筑网站建设建设部网站电子政务
  • 常州网站建设培训网站建设哪个部门管理
  • 网站建设 软件有哪些wordpress 鼠标移动到标题会显示图片
  • 国外做游戏评测的视频网站公司网站建设考核
  • 西安网站建设的软件网站建设 知乎
  • 健康养生网站模板深圳建设营销型网站
  • 手机网站大全免费下载内蒙古建设网官网查询中心
  • dz网站开发绵阳商城网站建设
  • 企业网站建设合同书标准版oto网站开发
  • 国外网站dns在线解析wordpress 聚美主题
  • 网页设计网站网站流量下降的原因
  • 做网站通常又什么开发完成免费设计房屋的软件
  • 徐汇网站建设推广网络推广的网站有哪些
  • 免费简历制作网站推荐房产网站设计公司
  • 微商手机网站制作公司石家庄有什么好玩的地方
  • 可以免费做网站吗国内有奖活动第一分享平台
  • 百度网盘网站开发文档模板品牌设计与策划
  • 物流网站建设网wordpress内外网访问
  • p2p网站制作流程青岛市建设工程质量安全监督站官方网站
  • 可信赖的宜昌网站建设网站建设咨询推荐
  • wordpress站点标题删除企业导航网站源码
  • ftp如何上传网站毕业设计做网站还是系统
  • 哪家网站建设公司深圳航空公司官网
  • 跨境网站有哪些平台制作旅游景点介绍网页
  • 国外数码印花图案设计网站平台公司实体化转型
  • 代做企业网站什么亲子网站可以做一下广告词
  • 国外响应式网站模板模版网站商城
  • 临沂网站建设 百度优化网页设计与制作实训总结3000字
  • 延安市城乡建设局网站wordpress安装成功后怎么进后台