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

html页面网站建设中网上商城网站建设解决方案

html页面网站建设中,网上商城网站建设解决方案,dedecms网站地图生成,电商公司排名概述#xff1a; 现在的Java面试基本都会问到你知道什么是Springboot的自动配置。为什么面试官要问这样的问题#xff0c;主要是在于看你有没有对Springboot的原理有没有深入的了解#xff0c;有没有看过Springboot的源码#xff0c;这是区别普通程序员与高级程序员最好的…概述 现在的Java面试基本都会问到你知道什么是Springboot的自动配置。为什么面试官要问这样的问题主要是在于看你有没有对Springboot的原理有没有深入的了解有没有看过Springboot的源码这是区别普通程序员与高级程序员最好的试金石。本篇就让我把什么是Springboot自动装配讲的明明白白。 一、什么是SpringBoot自动配置 从字面上了解自动配置的意思是不需要我们手工写代码所有的配置由Springboot自动完成。怎么实现的呢 Springboot是通过EnableAutoConfiguration注解开启自动配置的对spring-boot-autoconfigure.jar包下的spring.factories这个文件进行扫描这个文件包含了可以自动装配的类当满足Condition注解指定的条件时便在依赖的支持下进行实例化注册到Spring容器中。 在以前的Spring MVC项目中所有的配置都在xml文件中进行代码容易造成混乱不易维护浪费了开发人员大量的时间和精力Spring Boot的最大的特点就是简化了各种xml配置内容将配置全部放在application.yml中进行集中配置代码采用阶梯的模式简易明了要使用的对象则采取注解的模式注入省去大量的代码。 Springboot核心配置原理 自动配置类都存放在spring-boot-autoconfigure-版本号.jar下的org.springframework.boot.autoconfigure中当我们在application.properties中配置debugtrue后启动容器。可以看到服务器初始化的初始化配置EmbeddedWebServerFactoryCustomizerAutoConfiguration注册容器类型HttpMessageConvertersAutoConfiguration注册json或者xml处理器JacksonAutoConfiguration注册json对象解析器如果加入其他功能的依赖springBoot还会实现这些功能的自动配置 二、装载流程 三、什么是Starter组件 Starter组件是可被加载在应用中的Maven依赖项。只有在Maven配置中添加对应的依赖配置即可使用对应的Starter组件。例如添加spring-boot-starter-web依赖就可以用于构建REST API服务其包含了SpringMVC和Tomcat内嵌容器。 一个完整的Starter组件包括以下两点 提供自动配置功能的自动配置模块 提供依赖关系管理岗功能的组件模块即封装了组件所有功能开箱即用。 spring-boot-starter-web依赖源码 package org.springframework.boot.autoconfigure.web.servlet;Configuration ConditionalOnClass({ServletRequest.class}) ConditionalOnWebApplication(type Type.SERVLET ) EnableConfigurationProperties({ServerProperties.class}) Import({ServletWebServerFactoryAutoConfiguration.BeanPostProcessorsRegistrar.class}) public class ServletWebServerFactoryAutoConfiguration {...... } 四、SpringBootApplication注解里的三大注解 SpringBootConfiguration继承自Configuration支持JavaConfig的方式进行配置。EnableAutoConfiguration主要用于开启自动配置。ComponentScan自动扫描组件默认扫描该类所在包及其子包下所有带有指定注解的类将它们自动装配到bean容器中会被自动装配的注解包括Controller、Service、Component、Repository等。也可以指定扫描路径。 如图 五、EnableAutoConfiguration注解的作用 这个注解是帮助我们自动加载默认配置的它里面有两个关键注解AutoConfigurationPackage和Import我们来详细了解Import注解。 Overridepublic String[] selectImports(AnnotationMetadata annotationMetadata) {//1、检查自动配置功能是否开启默认开启if (!isEnabled(annotationMetadata)) {return NO_IMPORTS;}//2、加载自动配置的元信息AutoConfigurationMetadata autoConfigurationMetadata AutoConfigurationMetadataLoader.loadMetadata(this.beanClassLoader);AnnotationAttributes attributes getAttributes(annotationMetadata);//3、获取候选配置类ListString configurations getCandidateConfigurations(annotationMetadata,attributes);//4、去掉重复的配置类configurations removeDuplicates(configurations);//5、获得注解中被exclude和excludeName排除的类的集合SetString exclusions getExclusions(annotationMetadata, attributes);//6、检查被排除类是否可实例化、是否被自动注册配置所使用不符合条件则抛出异常checkExcludedClasses(configurations, exclusions);//7、从候选配置类中去除掉被排除的类configurations.removeAll(exclusions);//8、过滤configurations filter(configurations, autoConfigurationMetadata);//9、将配置类和排除类通过事件传入到监听器中fireAutoConfigurationImportEvents(configurations, exclusions);//10、最终返回符合条件的自动配置类的全限定名数组return StringUtils.toStringArray(configurations);}Import(AutoConfigurationImportSelector.class)注解这里导入AutoConfigurationImportSelector类。这个类中有一个非常重要的方法 selectImports()它几乎涵盖了组件自动装配的所有处理逻辑包括获得候选配置类、配置类去重、排除不需要的配置类、过滤等最终返回符合条件的自动配置类的全限定名数组。 六、SpringFactoriesLoader加载器 spring-core包里定义了SpringFactoriesLoader类 SpringFactoriesLoader工厂加载机制是Spring内部提供的一个约定俗成的加载方式只需要在模块的META-INF/spring.factories文件这个Properties格式的文件中的key是接口、注解、或抽象类的全名value是以逗号 “ , “ 分隔的实现类使用SpringFactoriesLoader来实现相应的实现类注入Spirng容器中。 在这个类中定义了两个对外的方法 loadFactories根据接口类获取其实现类的实例这个方法返回对象的列表 loadFactoryNames 根据接口获取其接口类的名称这个方法返回的是类名的列表。 上面的两个方法的关键都是从指定的ClassLoader中获取spring.factories文件并解析得到类名列表具体代码如下 public static ListString loadFactoryNames(Class? factoryClass, ClassLoader classLoader) {String factoryClassName factoryClass.getName();try {EnumerationURL urls (classLoader ! null ? classLoader.getResources(FACTORIES_RESOURCE_LOCATION) :ClassLoader.getSystemResources(FACTORIES_RESOURCE_LOCATION));ListString result new ArrayListString();while (urls.hasMoreElements()) {URL url urls.nextElement();Properties properties PropertiesLoaderUtils.loadProperties(new UrlResource(url));String factoryClassNames properties.getProperty(factoryClassName);result.addAll(Arrays.asList(StringUtils.commaDelimitedListToStringArray(factoryClassNames)));}return result;}catch (IOException ex) {throw new IllegalArgumentException(Unable to load [ factoryClass.getName() ] factories from location [ FACTORIES_RESOURCE_LOCATION ], ex);} }由代码可知在这个方法中会遍历整个ClassLoader中所有jar包下的spring.factories文件。也就是说我们可以在自己的jar中配置spring.factories文件不会影响到其它地方的配置也不会被别人的配置覆盖。 spring.factories的是通过Properties解析得到的所以我们在写文件中的内容都是安装下面这种方式配置的com.xxx.interfacecom.xxx.classname 源码地址https://gitee.com/charlinchenlin/koo-erp
http://www.dnsts.com.cn/news/123869.html

相关文章:

  • 免费网站如何注册视频制作软件下载安装
  • 网站建设投标书模板app应用网站源码
  • php做网站首页企业网站报告册设计模板
  • 婚介网站方案鄂尔多斯做网站
  • 樟木头镇仿做网站如何提高seo关键词排名
  • django网站开发案例wordpress后台超慢
  • 好上手的做海报网站权重域名做网站有用么
  • 北京制作网站多少钱礼仪策划网站建设
  • 面对面视频 网站开发互联网营销推广渠道
  • 自己可以做视频网站吗做网站设计能赚钱吗
  • 做cpa必须要有网站吗怎么样做一个网站
  • 什么是二级网站推广wordpress一键 centos
  • 浙江省住房和建设厅网站php 网站版面素材
  • 成都网站网络建设wordpress博客转出
  • 河北建设网站怎么下载企业锁冯耀宗seo视频教程
  • 做网站主页图片一般多少mwordpress 亚马逊插件
  • 游戏网站风控怎么做广西住房和城乡建设厅招聘
  • 南京做企业网站公司德邦物流公司现代物流网站建设与开发
  • 颜色选取网站如何快速的制作h5页面
  • 西安做网站推广农庄网站模板
  • 新手怎么做电商在哪个网站数字logo创意设计
  • 装修房子的app软件哪个好谷歌seo详细教学
  • 找人做网站服务器不是自己的怎么办高清的建设工程人员查询
  • 为女朋友做的网站牟长青 做网站推广的四个基本要点
  • 下载的网站模板怎么去掉域名前的图标中国建筑工程信息资讯网
  • 选择好的佛山网站建设酷家乐在线3d云设计平台
  • 河南网站推广多少钱抚州城乡建设厅网站
  • 企业建立自己网站主要方式百度一下你就知道123
  • 郑州市 网站建设购物型网站怎么快速被百度收录
  • 网站建设费税率是多少为什么网站百度搜不到