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

铁门关市网站建设_网站建设公司_AJAX_seo优化

呼市做无痛人流z首大网站,软件开发外包要多少钱,长沙网页设计培训班在哪里,成都市成华区建设局网站文章目录 引言工作原理剖析EnableAutoConfiguration自动配置生效总结 引言 不论在工作中#xff0c;亦或是求职面试#xff0c;Spring Boot已经成为我们必知必会的技能项。除了某些老旧的政府项目或金融项目持有观望态度外#xff0c;如今的各行各业都在飞速的拥抱这个已经… 文章目录 引言工作原理剖析EnableAutoConfiguration自动配置生效总结 引言 不论在工作中亦或是求职面试Spring Boot已经成为我们必知必会的技能项。除了某些老旧的政府项目或金融项目持有观望态度外如今的各行各业都在飞速的拥抱这个已经不是很新的Spring启动框架。 当然作为Spring Boot的精髓自动配置原理的工作过程往往只有在“面试”的时候才能用得上但是如果在工作中你能够深入的理解Spring Boot的自动配置原理将无往不利。 Spring Boot的出现得益于“习惯优于配置”的理念没有繁琐的配置、难以集成的内容大多数流行第三方技术都被集成这是基于Spring 4.x提供的按条件配置Bean的能力。 Spring Boot的配置文件 初识Spring Boot时我们就知道Spring Boot有一个全局配置文件application.properties或application.yml。 我们的各种属性都可以在这个文件中进行配置最常配置的比如server.port、logging.level.* 等等然而我们实际用到的往往只是很少的一部分那么这些属性是否有据可依呢答案当然是肯定的这些属性都可以在官方文档中查找到 https://docs.spring.io/spring-boot/docs/2.1.0.RELEASE/reference/htmlsingle/#common-application-properties 所以话又说回来找资料还得是官方文档百度出来一大堆还是稍显业余了一些 除了官方文档为我们提供了大量的属性解释我们也可以使用IDE的相关提示功能比如IDEA的自动提示和Eclipse的YEdit插件都可以很好的对你需要配置的属性进行提示下图是使用Eclipse的YEdit插件的效果Eclipse的版本是STS 4。 以上是Spring Boot的配置文件的大致使用方法其实都是些题外话。 那么问题来了这些配置是如何在Spring Boot项目中生效的呢 那么接下来就需要聚焦本篇博客的主题自动配置工作原理或者叫实现方式。 工作原理剖析 Spring Boot关于自动配置的源码在spring-boot-autoconfigure-x.x.x.x.jar 中 当然自动配置原理的相关描述官方文档貌似是没有提及。不过我们不难猜出Spring Boot的启动类上有一个SpringBootApplication注解这个注解是Spring Boot项目必不可少的注解。那么自动配置原理一定和这个注解有着千丝万缕的联系 EnableAutoConfiguration SpringBootApplication是一个复合注解或派生注解在SpringBootApplication中有一个注解EnableAutoConfiguration翻译成人话就是开启自动配置其定义如下 而这个注解也是一个派生注解其中的关键功能由Import提供其导入的AutoConfigurationImportSelector的selectImports()方法通过SpringFactoriesLoader.loadFactoryNames()扫描所有具有META-INF/spring.factories 的jar包。spring-boot-autoconfigure-x.x.x.x.jar里就有一个这样的spring.factories文件。 这个spring.factories文件也是一组一组的keyvalue的形式其中一个key是EnableAutoConfiguration类的全类名而它的value是一个xxxxAutoConfiguration的类名的列表这些类名以逗号分隔如下图所示 这个EnableAutoConfiguration注解通过SpringBootApplication被间接的标记在了Spring Boot的启动类上。在SpringApplication.run(…)的内部就会执行selectImports()方法找到所有JavaConfig自动配置类的全限定名对应的class然后将所有自动配置类加载到Spring容器中。 自动配置生效 每一个XxxxAutoConfiguration自动配置类都是在某些条件之下才会生效的这些条件的限制在Spring Boot中以注解的形式体现常见的条件注解有如下几项 ConditionalOnBean当容器里有指定的bean的条件下。 ConditionalOnMissingBean当容器里不存在指定bean的条件下。 ConditionalOnClass当类路径下有指定类的条件下。 ConditionalOnMissingClass当类路径下不存在指定类的条件下。 ConditionalOnProperty指定的属性是否有指定的值比如ConditionalOnProperties(prefix”xxx.xxx”, value”enable”, matchIfMissingtrue)代表当xxx.xxx为enable时条件的布尔值为true如果没有设置的情况下也为true。 以ServletWebServerFactoryAutoConfiguration配置类为例解释一下全局配置文件中的属性如何生效比如server.port8081是如何生效的当然不配置也会有默认值这个默认值来自于org.apache.catalina.startup.Tomcat。 在ServletWebServerFactoryAutoConfiguration类上有一个EnableConfigurationProperties注解开启配置属性而它后面的参数是一个ServerProperties类这就是习惯优于配置的最终落地点。 在这个类上我们看到了一个非常熟悉的注解ConfigurationProperties它的作用就是从配置文件中绑定属性到对应的bean上而EnableConfigurationProperties负责导入这个已经绑定了属性的bean到spring容器中见上面截图。那么所有其他的和这个类相关的属性都可以在全局配置文件中定义也就是说真正“限制”我们可以在全局配置文件中配置哪些属性的类就是这些XxxxProperties类它与配置文件中定义的prefix关键字开头的一组属性是唯一对应的。 至此我们大致可以了解。在全局配置的属性如server.port等通过ConfigurationProperties注解绑定到对应的XxxxProperties配置实体类上封装为一个bean然后再通过EnableConfigurationProperties注解导入到Spring容器中。 而诸多的XxxxAutoConfiguration自动配置类就是Spring容器的JavaConfig形式作用就是为Spring 容器导入bean而所有导入的bean所需要的属性都通过xxxxProperties的bean来获得。 可能到目前为止还是有所疑惑但面试的时候其实远远不需要回答的这么具体你只需要这样回答 Spring Boot启动的时候会通过EnableAutoConfiguration注解找到META-INF/spring.factories配置文件中的所有自动配置类并对其进行加载而这些自动配置类都是以AutoConfiguration结尾来命名的它实际上就是一个JavaConfig形式的Spring容器配置类它能通过以Properties结尾命名的类中取得在全局配置文件中配置的属性如server.port而XxxxProperties类是通过ConfigurationProperties注解与全局配置文件中对应的属性进行绑定的。 通过一张图标来理解一下这一繁复的流程 总结 综上是对自动配置原理的讲解。当然在浏览源码的时候一定要记得不要太过拘泥与代码的实现而是应该抓住重点脉络。 一定要记得XxxxProperties类的含义是封装配置文件中相关属性XxxxAutoConfiguration类的含义是自动配置类目的是给容器中添加组件。 而其他的主方法启动则是为了加载这些五花八门的XxxxAutoConfiguration类。
http://www.lebaoying.cn/news/51752.html

相关文章:

  • 购物帮–做特惠的导购网站php做网站首页
  • 泉州市住房和城乡建设局网站下载好的网站模板怎么用
  • 章丘灵通环保设备在哪个网站上做的好看的seo网站
  • 网站建设岗位能力在线之家官网
  • 安徽建设工程造价信息网站福清市住房和城乡建设局网站
  • 开发网站建设公司杭州建设网站需要多少钱
  • 如何做海外淘宝网站微网站制作平台哪个好
  • 公司网站必须做可信认证吗果冻影视传媒有限公司
  • 网站地图那么建设去哪个网站可以接单做ps等等
  • 手机 网站模板小程序商城开发商
  • 怎么在工商局网站做股东变更网络营销公司都做什么的
  • 网站怎么做微信支付宝小米R2D安装wordpress
  • 做网站字体格式用锐利吗天津做网站的公司排名
  • 网站响应度陕西网站建设品牌公司推荐
  • 西安市精神文明建设网站衡水seo
  • 制作一个网站要花多少钱求几个能用的地址2021
  • 四川省建设注册中心网站微信h5的制作方法
  • 做网站编辑需要经验吗网站外链建设与文章发布规范
  • 蓝色大气企业网站模板wordpress舰娘
  • 温州网站开发app制作网站开发 开源
  • 建设教育网站怎么样微信网页版二维码
  • 我想网站建设多少钱百度信息流怎么做效果好
  • 私募基金公司网站建设网站5g空间多少钱
  • 用什么IE打开建设银行网站诸城 网站 建设
  • 如何后台修改网站联系人iis做的网站如何添加播放器
  • 做视频课程的网站有哪些网站首页的功能需求分析
  • 网站开发一般用哪个浏览器国内新闻大事20条
  • 清远医院网站建设费用优秀网页设计教程
  • 做商城网站服务器配置怎么选择品牌形象宣传策划方案
  • 手机网站的建设做韩国网站有哪些东西吗