游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

SpringBoot的自动配置原理

  使用SpringBoot之后,一个整合了SpringMVC的WEB工程开发,变的无比简单,那些繁杂的配置都消失不见了,这是如何做到的?
  一切魔力的开始,都是从我们的main函数来的,所以我们再次来看下启动类:
  我们发现特别的地方有两个:注解:SpringBootApplicationrun方法:SpringApplication。run()
  我们分别来研究这两个部分。了解SpringBootApplication
  点击进入,查看源码:
  这里重点的注解有3个:SpringBootConfigurationEnableAutoConfigurationComponentScan
  4。1。1。SpringBootConfiguration
  通过这段我们可以看出,在这个注解上面,又有一个Configuration注解。通过上面的注释阅读我们知道:这个注解的作用就是声明当前类是一个配置类,然后Spring会自动扫描到添加了Configuration的类,并且读取其中的配置信息。而SpringBootConfiguration是来声明当前类是SpringBoot应用的配置类,项目中只能有一个。所以一般我们无需自己添加。
  4。1。2。EnableAutoConfiguration
  关于这个注解,官网上有一段说明:ThesecondclasslevelannotationisEnableAutoConfiguration。Thisannotation
  tellsSpringBoottoguesshowyouwanttoconfigureSpring,basedonthejar
  dependenciesthatyouhaveadded。SincespringbootstarterwebaddedTomcat
  andSpringMVC,theautoconfigurationassumesthatyouaredevelopingaweb
  applicationandsetsupSpringaccordingly。
  简单翻译以下:
  第二级的注解EnableAutoConfiguration,告诉SpringBoot基于你所添加的依赖,去猜测你想要如何配置Spring。比如我们引入了springbootstarterweb,而这个启动器中帮我们添加了tomcat、SpringMVC的依赖。此时自动配置就知道你是要开发一个web应用,所以就帮你完成了web及SpringMVC的默认配置了!
  总结,SpringBoot内部对大量的第三方库或Spring内部库进行了默认配置,这些配置是否生效,取决于我们是否引入了对应库所需的依赖,如果有那么默认配置就会生效。
  所以,我们使用SpringBoot构建一个项目,只需要引入所需框架的依赖,配置就可以交给SpringBoot处理了。除非你不希望使用SpringBoot的默认配置,它也提供了自定义配置的入口。
  4。1。3。ComponentScan
  我们进源码
  并没有看到什么特殊的地方。我们查看注释:
  大概的意思:配置组件扫描的指令。提供了类似与标签的作用
  通过basePackageClasses或者basePackages属性来指定要扫描的包。如果没有指定这些属性,那么将从声明这个注解的类所在的包开始,扫描包及子包
  而我们的SpringBootApplication注解声明的类就是main函数所在的启动类,因此扫描的包是该类所在包及其子包。因此,一般启动类会放在一个比较前的包目录中。默认配置原理:
  4。2。1默认配置类
  通过刚才的学习,我们知道EnableAutoConfiguration会开启SpringBoot的自动配置,并且根据你引入的依赖来生效对应的默认配置。那么问题来了:这些默认配置是在哪里定义的呢?为何依赖引入就会触发配置呢?
  其实在我们的项目中,已经引入了一个依赖:springbootautoconfigure,其中定义了大量自动配置类:
  还有
  非常多,几乎涵盖了现在主流的开源框架,例如:redisjmsamqpjdbcjacksonmongodbjpasolr
  elasticsearch
  我们来看一个我们熟悉的,例如SpringMVC,查看mvc的自动配置类:
  打开WebMvcAutoConfiguration:
  我们看到这个类上的4个注解:Configuration:声明这个类是一个配置类ConditionalOnWebApplication(typeType。SERVLET)ConditionalOn,翻译就是在某个条件下,此处就是满足项目的类是是Type。SERVLET类型,也就是一个普通web工程,显然我们就是ConditionalOnClass({Servlet。class,DispatcherServlet。class,WebMvcConfigurer。class})这里的条件是OnClass,也就是满足以下类存在:Servlet、DispatcherServlet、WebMvcConfigurer,其中Servlet只要引入了tomcat依赖自然会有,后两个需要引入SpringMVC才会有。这里就是判断你是否引入了相关依赖,引入依赖后该条件成立,当前类的配置才会生效!ConditionalOnMissingBean(WebMvcConfigurationSupport。class)这个条件与上面不同,OnMissingBean,是说环境中没有指定的Bean这个才生效。其实这就是自定义配置的入口,也就是说,如果我们自己配置了一个WebMVCConfigurationSupport的类,那么这个默认配置就会失效!
  接着,我们查看该类中定义了什么:
  视图解析器
  处理器适配器(HandlerAdapter)
  还有很多,这里就不一一截图了。
  4。2。2。默认配置属性
  另外,这些默认配置的属性来自哪里呢?
  我们看到,这里通过EnableAutoConfiguration注解引入了两个属性:WebMvcProperties和ResourceProperties。这不正是SpringBoot的属性注入玩法嘛。
  我们查看这两个属性类:
  找到了内部资源视图解析器的prefix和suffix属性。
  ResourceProperties中主要定义了静态资源(。js,。html,。css等)的路径:
  如果我们要覆盖这些默认属性,只需要在application。properties中定义与其前缀prefix和字段名一致的属性即可。4。3。总结
  SpringBoot为我们提供了默认配置,而默认配置生效的条件一般有两个:你引入了相关依赖你自己没有配置
  1)启动器
  所以,我们如果不想配置,只需要引入依赖即可,而依赖版本我们也不用操心,因为只要引入了SpringBoot提供的stater(启动器),就会自动管理依赖及版本了。
  因此,玩SpringBoot的第一件事情,就是找启动器,SpringBoot提供了大量的默认启动器,参考课前资料中提供的《SpringBoot启动器。txt》
  2)全局配置
  另外,SpringBoot的默认配置,都会读取默认属性,而这些属性可以通过自定义application。properties文件来进行覆盖。这样虽然使用的还是默认配置,但是配置中的值改成了我们自定义的。
  因此,玩SpringBoot的第二件事情,就是通过application。properties来覆盖默认属性值,形成自定义配置。我们需要知道SpringBoot的默认属性key,非常多,参考课前资料提供的:《SpringBoot全局属性。md》

WiFi不关台式电脑什么事?其实无线上网很容易!当笔记本集成了无线网卡,在WiFi铺天盖地的无线世界如同进步新青年一般左右逢源时,台式机拖着长长的网线,像极了留着辫子的遗老遗少,绝缘于无线世界,被WiFi无情搁浅。明明……TOPPERS智能AI音箱问世告别固定电话,颠覆移动通信行业为啥需要AI智能音箱?如果说,智能手机时代把人与人交流变得更简单更方便,那么AI人工智能则是把人变得更懒惰,人工智能语音的出现也是近几年比较热门的研究对象,BAT包括国内……想吃鸡?你可能需要一条威拓声学专业手游3D环绕耳机!之前体验了多款蓝牙耳机,对于蓝牙耳机的音质我只能说还有很大一部分上升空间,即便拿出同价位的有线耳机来比,蓝牙耳机除了无线传输以及佩戴使用方便的优势外,在音质上是被同价位的有线耳……呼伦贝尔宋Pro让利促销,直降1。0万元,欢迎垂询今天给大家推荐一款车:它就是宋Pro,特别适合日常使用,据悉:比亚迪益丰祥泰店即日起到09月27日限时回馈用户,直降10。78,对宋Pro感兴趣的朋友不妨亲自体验一下促销时间2……注销必查三年账?税局刚明确!不想被罚,企业注销必须按这个来企业注销最新流程来了!今天起,不想被罚,企业注销必须按这个来!大家一定要重视,已有多家企业被查被罚!突发!注销惨案!已有多家企业被查!这些被查企业中,有些是因……凯迪仕K20V智能门锁评测既是智能门锁,也是家中的守门员作为一名年轻人出门在外,只想带着一部手机,至于钱包和钥匙,根本就无处安放,毕竟现在智能设备相当普及,也是时候得为家中升级一把智能锁了。当然既然是智能锁,那么我们对于锁的要……贵阳标致508L热销中,直降1。3万元汽车报价早知道:贵州钟裕东风标致店,标致508L限时特惠大酬宾,11月03日11月05日最高优惠8。14,有购车意向的朋友不妨亲自去试驾一下,店铺地址:新添大道南段243号……交易必读丨傻瓜式价格行为指南不可否认,成功的交易者往往借助基本面和技术面分析获取盈利,但这些交易系统往往很快变得错综复杂。如果有一种方法能够帮助你交易且不会迷失在图表上十余种分析指标之中,是不是可以做到事……两百元的性价比之王,漫步者Lollipods体验漫步者作为老牌音响制造商,专注于音频领域至今已经有了20多年的历史,在音频方面的技术沉淀也非新晋耳机厂商能对比的,今天给大脚带来一款漫步者新品Lollipods真无线蓝牙耳机的……新品上市传承德国品质CarlJohann三角钢琴隆重登场CarlJohannDesignedbySAUTER系列三角钢琴闪耀登场此次上市的德国SAUTER(首德)旗下家族品牌CarlJohann(卡尔约翰)系列两款三角钢琴分别……苹果公司季度营收创纪录,靠的是什么?据苹果公司2021年第一财季数据,公司本季度营收达到1114。39亿美元,首次突破1000亿美元大关,创下历史新高。其中,iphone产品线营收达到656亿美元,较上年同……AMD锐龙73700X装机案例,搭配蓝宝石5700XT,通吃Hello大家好,我是兼容机之家的小牛。跟大家说一个好消息,AMD官方表示,B450、X470主板可以通过更新BIOS来支持Zen3新一代锐龙处理器。相比英特尔每两……
五问广汽埃安混改,洪流下不进则退关注并标星电动星球News每天打卡阅读更深刻理解汽车产业变革大概10天前,广汽集团发布了一则公告。表示拟通过对新能源汽车研发能力及业务、资产的重组整合,推进广……专业游戏手机排名,这三款品牌深受大家喜爱,你认识多少现在的手机牌子多种多样,性能也是各有异处。有些适合打游戏,有些就不太适合,每一年都有统计数据出专业游戏手机品牌排名,你知道哪款手机在排行榜前几吗?不知道的话就快来看看下文,小编……凌晨突发!两船碰撞,12人失联!8月30日凌晨,福建泉州深沪籍渔船闽晋渔05119在距平潭岛正东45海里海域沉没,渔船上14人遇险,两名船员被周边作业渔船闽晋渔05769救起,另外12名船员失联。福建省……余承东评价华为Mate40Pro,网友用雷军名言回复!缺德华为每一代的Mate系列手机和p系列手机都是顶级的旗舰,销量自然是不用担心,更重要的是热度能够一直保持下去,也是目前国产手机中唯二的高端机。不过,mate40系列作为一款去年1……浅谈自动变速箱的L档S档都有什么作用如今自动变速箱逐渐被市场所接受,毕竟交通越来越堵,走走停停是家常便饭,开手动波箱确实很遭罪,一些新手更会显得手忙脚乱,所以这个拥堵的时代,向自动变速箱妥协也是一种必然。当我们过……挂增幅装置,外星人AW510H耳机AW521BR蓝牙接收器众所周知外星人Alienware品牌在业界是高端和顶级的代名词,旗下的产品也都有着非常个性独特的造型。最近接触到了外星人旗下一套通过悬挂外接装置,对有线耳机进行蓝牙无线升级的组……瑞福德系严管办公用品领用,有助于降低企业成本很多企业在企业管理过程当中并不注意办公用品的领用,特别是对于一些低值易耗的办公用品,更是格外轻视。认为一支笔一个本的成本很低,员工即使多领几个能有什么成本呢?殊不知这样的想法是……会用光用好光,洋葱工厂布朗尼摄影灯套装体验摄影是用光的艺术,想必你已经听过这句话了。光是影响照片氛围感的重要因素,充足的光线能够最大程度发挥相机性能,好的摄影师总是在第一时间找到合适的光线。如果光线不足,或者需要特殊光……制造业的云服务器如何选?【新网云资讯】在5G、物联网、人工智能等技术的应用下,产品实体正在成为数字化服务的载体。这也使得越来越多的数据产生在远离数据中心的边缘端,促使企业IT向着边缘端延伸来提供智能服……IT精英巅峰对决,智慧点亮软件之光IT精英巅峰对决,智慧点亮软件之光大连高新区首届IT职业技能大赛举行决赛暨颁奖典礼5月31日,大连高新区首届IT职业技能大赛决赛暨颁奖典礼在高新区创业DNA咖啡厅举……蝴蝶兰花期后的修剪方法,如何才能更快的复花?蝴蝶兰开花特别漂亮,就像一朵朵各色的蝴蝶在枝条上翩翩起舞,而且它的花朵很大,花色艳丽,而且花期很长,所以也深受人们的喜爱,在春节是很重要的年宵花。蝴蝶兰开完花之后,要把它的花梗……教育部新增37个本科专业!这一领域涉及的最多!原子同学教育部3月1日公布2020年度普通高等学校本科专业备案和审批结果的通知。在经过对高等学校专业设置与教学指导委员会评议后,于日前确定了同意设置的备案专业、国家控制布点专业和新增目……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网