网站建设公司 云智互联深圳个人网站建设

web/2025/9/29 0:10:01/文章来源:
网站建设公司 云智互联,深圳个人网站建设,wordpress 后台进不去_如何替换主题,电子商务平台文章目录 引言工作原理剖析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.mzph.cn/web/83598.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

建设工程 法律 网站学了网站建设的心得体会

MySQL主从复制机制简述 MySQL的主从复制机制是一种数据复制方案,用于在多个服务器之间同步数据。此机制允许从一个服务器(主服务器)到一个或多个其他服务器(从服务器)进行数据的复制,从而增强数据冗余、提…

高密微网站建设网站开发主要使用的技术

网络交换机,是一个扩大网络的器材,能为子网络中提供更多的连接端口,以便连接更多的计算机。我们在配置交换机的时候首先要了解的就是交换机命令模式,那么,网络交换机的命令配置模式有哪些呢?接下来小编就来…

保健品网站建设案例购物网站的详细设计

目录 Logistic回归公式推导: Sigmoid函数: Logistic回归如何实现分类: 优化的方法: 代码: 1.创建一个随机数据集,分类直线为y2x: 为什么用np.hstack()增加一列1? 为什么返回…

网站建设基本模板介绍百度电话号码查询

数据类型 数据类型 在JavaScript中,数据类型有两大类。一类是基本数据类型,一类是引用数据类型。 基本数据类型有六种:number、string、boolean、null、undefined、symbol。 基本数据类型存放在栈中。存放在栈中的数据具有数据大小确定&a…

网站设计的目的燕郊医院网站建设

代码: https://github.com/ReneNyffenegger/cpp-base64 指南:https://renenyffenegger.ch/notes/development/Base64/Encoding-and-decoding-base-64-with-cpp/ 实操:

网站引导页的作用做暧暧暖免费观看网站

实验要求: 看拓扑有两个网段则我们首先需要对200.1.1.0/26进行子网划分,划分为两个子网,为200.1.1.0/27和200.1.1.32/27 我门就可以一边一个网段了,左边为200.1.1.0/27,右边为200.1.1.32/27 1、配置PC1,2…

如何提高网站点击率我的世界服务器如何做充钱网站

参考自哔站:FPGA IP之AXI4-Lite AXI4-Stream_哔哩哔哩_bilibili 信号 传输层级从小到大 包(----------transfer--transfer--------)------delay--------包(----------transfer--transfer--------) TKEEP和TSTRB共同决定了是哪种数据流

移动网站开发的视频下载南京公司网站建设费用

来源:机器人创新生态摘要:我们已经听说过柔性电子“皮肤”可以让机器人或假肢具有类似人类的触觉。然而,现在德克萨斯大学阿灵顿分校的科学家们声称他们开发的“皮肤”比具有比人类更好的触觉敏感。由Zeynep ?elik-Butler教授领导的团队创建…

网站的缩略图扁平化 wordpress 主题下载

前言:这是白杨SEO原创第523篇。为什么想到写这个?因为有好几个朋友问我做SEO主要用哪个AI工具来创作?所以就分享一下我用的工具,希望对大家有一点点帮助,需要的可以收藏。图片在公众号白杨SEO上去看。 声明&#xff1…

做app好还是响应式网站河北邯郸封闭最新消息

新建代码库repository 1、在当前目录新建一个git代码库 git init git init projectname 2、下载一个项目,如果已经有了远端的代码,则可以使用clone下载 git clone url 增加/删除/改名文件 1、添加指定文件到暂存区 git add filename 2、添加指定目录到暂…

新建网站网络空间室内设计装修是什么专业

设计与实现一个简单词法分析。具体内容是产生一个二元式文本文件,扩展名为dyd,可将Java或C程序(测试程序)分解成为一个一个的单词及类型。 (选做:并查“单词符号与种别对照表”得出其种别,用一数字表示。)…

提供网站建设收益分录全网营销推广有哪些平台

Seata AT 模式 上一节中我们提到AT模式是基于XA事务模型演变过来的,所以他的整体机制也是一个改进版本的两阶段提交协议。 第一阶段:业务数据和回滚日志记录在同一个本地事务中提交,释放本地锁和链接资源第二阶段:提交异步化&…

散热器 东莞网站建设模板免费下载网站

此实验的前提是防火墙需关闭。 1.关闭iptables /etc/init.d/iptables stop /etc/init.d/iptables status 2.关闭selinux setenforce 0 getenforce Permissive ---出现这个单词即代表selinux临时关闭,如需永久关闭则需修改/etc/sysconfig/selinux配置文件 …

杭州企业建设网站企业哔哩哔哩网页版怎么回到旧版

前言 友链: 原文地址 ❓-背景- 现有物理机A,B。A中安装了虚拟机VM上面部署了服务(这里以mysql为例)。B需要访问A虚拟机中部署的服务。 -环境- 物理机A(192.168.135.161)物理机B(192.168.135.162&#xf…

劳保手套网站建设做旅行社网站多少钱

关系数据库与非关系型数据库概述 关系型数据库 关系型数据库是一个结构化的数据库,创建在关系模型(二维表格模型)基础上,一般面向于记录。SQL语句(标准数据查询语言)就是一种基于关系型数据库的语言,用于执行对关系型…

好学校平台网站模板下载不了中国英文政务网站建设

文心一言 Ian Goodfellow是机器学习领域的知名学者,对深度学习领域有着重要贡献。他生于1985年,本科和硕士阶段就读于斯坦福大学,师从吴恩达。博士阶段,他跟随蒙特利尔大学的著名学者Yoshua Bengio研究机器学习,并在2…

增城网站公司电话网站开发公司的义务

随着互联网化,随着信息化的不断发展,企业IT系统的规模和复杂性也在日益增加。在这个背景下,IT统一运维平台就应用而生了。它以一种全面、集成的方式管理企业IT资源,从而提高效率、降低成本、改善服务,为企业提供更快更…

汽车租赁网站开发厦门seo关键词优化培训

来源:http://www.cnblogs.com/AllenDang/archive/2012/03/03/2378534.html 从2000年至今,也写了11年代码了,期间用过VB、Delphi、C#、C、Ruby、Python,一直在寻找一门符合自己心意和理念的语言。我很在意写代码时的手感和执行的效…

北京网站名称注册证书php作品源代码免费下载

转载自 Sentinel如何使用 简介 Sentinel 可以简单的分为 Sentinel 核心库和 Dashboard。核心库不依赖 Dashboard,但是结合 Dashboard 可以取得最好的效果。 这篇文章主要介绍 Sentinel 核心库的使用。如果希望有一个最快最直接的了解,可以参考 新手指…

php企业网站开发框架开发公司可以顾保安

导入第三方库时出现了sdk版本不兼容问题 为我们app的module所支持的sdk最低版本与依赖module的sdk最低版本不一致 把15--》16即可