【SpringBoot系列】自动装配原理
一、自动装配
二、思考:我们的application.yml和spring.factories之间有什么联系呢?
1、下面我们打开一个看看,代码如下(重点在于下面代码中的注释部分)
//表示一个配置类,表示他会被spring接管配置
@Configuration(proxyBeanMethods = false)
//自动配置属性
@EnableConfigurationProperties(ServerProperties.class)
//@ConditionalOn是spring的底层注解,根据不同的条件来判断当前配置或类是否生效
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET) //判断是否为web应用
@ConditionalOnClass(CharacterEncodingFilter.class) //字符编码过滤器
@ConditionalOnProperty(prefix = "server.servlet.encoding", value = "enabled", matchIfMissing = true) //判断是否有这个配置,false,则走默认
public class HttpEncodingAutoConfiguration {private final Encoding properties;
//构造器也指向了自动配置属性的properties
public HttpEncodingAutoConfiguration(ServerProperties properties) {this.properties = properties.getServlet().getEncoding();
}@Bean
@ConditionalOnMissingBean
public CharacterEncodingFilter characterEncodingFilter() {CharacterEncodingFilter filter = new OrderedCharacterEncodingFilter();filter.setEncoding(this.properties.getCharset().name());filter.setForceRequestEncoding(this.properties.shouldForce(Encoding.Type.REQUEST));filter.setForceResponseEncoding(this.properties.shouldForce(Encoding.Type.RESPONSE));return filter;
}@Bean
public LocaleCharsetMappingsCustomizer localeCharsetMappingsCustomizer() {return new LocaleCharsetMappingsCustomizer(this.properties);
}static class LocaleCharsetMappingsCustomizerimplements WebServerFactoryCustomizer<ConfigurableServletWebServerFactory>, Ordered {private final Encoding properties;LocaleCharsetMappingsCustomizer(Encoding properties) {this.properties = properties;}@Overridepublic void customize(ConfigurableServletWebServerFactory factory) {if (this.properties.getMapping() != null) {factory.setLocaleCharsetMappings(this.properties.getMapping());}}@Overridepublic int getOrder() {return 0;}
}
}
2、我们点击这个ServerProperties进去看看,进入到ServerProperties.java文件
@ConfigurationProperties(prefix = "server", ignoreUnknownFields = true)
3、我们在yaml文件中写server.就会出现与HttpProperties.java中的属性一样,也就是说我们yaml中配置的东西就是ServerProperties类中的东西
4、@ConditionalOn是spring的底层注解,根据不同的条件来判断当前配置或类是否生效
三、核心总结:
四、如何查看哪些自动配置类生效
【SpringBoot系列】自动装配原理相关推荐
- 【SpringBoot】自动装配原理
[SpringBoot]自动装配原理 文章目录 [SpringBoot]自动装配原理 一.pom.xml 1.spring-boot-dependencies 2.spring-boot-starte ...
- SpringBoot之自动装配原理
1. 自动装配的使用 Spring Boot的核心理念是简化Spring应用的搭建和开发过程,提出了约定大于配置和自动装配的思想.开发Spring项目通常要配置xml文件,当项目变得复杂的时候,xml ...
- springboot 整合redis_springboot自动装配原理详解
1)传统ssm整合redis的时候 需要在xml的配置文件中 进行大量的配置Bean 我们在这里使用springboot来代替ssm的整合,只是通过xml的形式来整合redis 第一步:加入配置 &l ...
- SpringBoot 自动装配原理解析
自动装配是 Spring Boot 的核心部分,也是 Spring Boot 功能的基础,正是由于自动装配,才 将我们从 Bean 的繁复配置中解脱出来.那么 Spring Boot 中的自动装配指的 ...
- springboot 项目起步讲解及自动装配原理
哈喽~大家好,这篇看看springboot 项目起步讲解及自动装配原理.
- 【理解springboot自动装配原理】
理解springboot自动装配原理: 最近读了小马哥(mercyblitz)Springboot编程思想(核心篇),有了一些心得和感悟,分享给大家: 1. 官网介绍了激活自动装配的方法: * 文档提 ...
- SpringBoot自动装配原理浅析
Springboot自动装配原理 SpringBoot是当下J2EE最为流行的框架,它有着轻量,快捷等特点,让程序员们可以专注在业务逻辑的编写上,而不用花太多的力气在一些环境的配置,整合组件的配置上面 ...
- 刨析 SpringBoot 自动装配原理,其实很简单
J3 SpringBoot # 源码 # 自动装配 一日我在愉快得遨游时,看到有鱼友在问:SpringBoot 中引入了 Nacos 依赖为啥就可以直接使用 Nacos 中的相关功能呀! 认真思考了一 ...
- 雷神SpringBoot入门和自动装配原理
SpringBoot-helloWord! 首先让当前的工程作为Springboot的子工程 <parent><groupId>org.springframework.boot ...
- SpringBoot自动装配原理解析——面试可以这样会回答
1. 前言 SpringBoot是目前软件中最主流的框架,无论是工作还是面试基本都有它的身影,SpringBoot主要解决了传统spring的重量级xml配置Bean,实现了自动装配:所以,我们也常在 ...
最新文章
- mysql timestamp比较查询
- [原创]K8域控植入脚本生成器(内网渗透/RPC不可用解决方案)
- 【springboot】模板路径、静态资源路径、WebRoot的本地路径
- vba htm转成图片_提取1000页PPT的图片,同事花了两小时,我只花了两分钟
- 基础练习 01字串 c语言
- Delphi应用程序在命令行下带参数执行返回命令行提示的问题
- MySQL笔记-ibd文件格式初步分析(仅数据块笔记)
- 从微服务应用于技术栈,了解华为云微服务应用
- 抱怨一下有些邮件列表的气氛
- 250个jquery 插件
- upload漏洞专题
- matlab更改类型,matlab数据类型和转换
- unity游戏开发毕设_毕设分享:用Unity探究2D游戏的打击感
- python爬取51job关于python的招聘信息
- 收缩毛孔全过程,很详细! - 健康程序员,至尚生活!
- 最常用的5个网页自动化点击工具
- android obb在哪,.obb是什么文件?obb文件怎么用/放在哪里
- 华为系统鸿蒙的名字来源,鸿蒙系统名字含义_华为鸿蒙操作系统自己研发吗
- vue3 静态图片 或者 css等 import 报错 Cannot find module ‘xxxx‘ or its corresponding type de
- VS2005 编译器选项