@Congition&amp ;自动配置报告|学习笔记

简介: 快速学习 @Congition&amp ;自动配置报告

开发者学堂课程【 SpringBoot 快速掌握 - 核心技术:@Congition& ;自动配置报告】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/612/detail/9232


@Congition& ;自动配置报告

内容介绍:

一、实操演示

二、细节


一、实操演示

@Configuration@FnableConfigurationProperties(HttpEncodingProperties.class)@Conditional0nwebApplication@Conditional0nclass(CharacterEhcodingFilter.class)GConditionalOnProperty(prefix F "spring.http.encoding"" value = "enabled" matchIfNissing = true)

//在用户进行自动配置时有一个很重要的环节,如果想要自动配置项生效,那么就要根据 configuration 判断来,判断成功,则自动配置生效。@Bean@conditionalOnMissingBean(CharacterEncodingFilter.class)public CharacterEncodingFiltetcharacterEncodingFilter(){CharacterEncodingFilter filter = new OrderedCharacterEncodingFilter();filter.setEncoding(this.properties.getCharset().name());filter.setForceRequestEncoding(this.properties.shouldForce(Type.REQUEST));filter.setForceResponseEncoding(this.properties.shouldForce(Type.RESPONSE));return filter;

}

//当用户想要往容器中添加组件时,是通过 @Bean 添加的,这时也存在条件判断( @conditionalOnMissingBean ),此时的要求时容器重必须没有 MissingBean  才行,只有当容器中没有这个组件时,添加的组件才能够生效。其中  conditionalOn 是通过 spring 的底层注解 @Conditional 来实现的,注解后面的参数是条件类 conditional ( onclassCondition.class ) ,点击 onclassCondition.class  可查看条件判断类的具体信息。public boolean[] match ( String[] autoConfigurationClasses ,进入后可发现这里有一个 match 方法,使用者也可以在此书写自己的 Java 代码;匹配了返回 true ,匹配不成功则返回 false 。返回 false 也就意味着判断失败。


二,细节

1、 @Conditional 派生注解( Spring 注解版原生的 @Conditional 作用)

作用:必须是 @Conditional 指定的条件成立,才给容器中添加组件,配置配里面的所有内容才生效;

Conditional 扩展注解

作用(判断是否满足当前指定条件)

@ConditionalOnJava

系统的 java 版本是否符合要求

@ConditionalOnBean

容器中存在指定 Bean  ;

ConditionalOnMissingBean

容器中不存在指定 Bean ;

ConditionalOnExpression

满足 SpEL 表达式指定

@ConditionalOnClass

系统中有指定的类

@ConditionalOnMissingClass

系统中没有指定的类

ConditionalOnSingleCandidate

容器中只有一个指定的 Bean ,或者这个Bean是首选 Bean

@ConditionalOnProperty

系统中指定的属性是否有指定的值

@ConditionalOnResource

类路径下是否存在指定资源文件

@ConditionalOnWebApplication

当前是web环境

ConditionalOnNotWebApplication

当前不是web环境

@ConditionalOnJndi

JNDI存在指定项

 

//其中 @ConditionalOnJava 用于检查系统的java版本是否符合要求,看是否是用户所需要的版本; @ConditionalOnBean 用于判断容器中是否存在指定的组件,比如用户在配置 CharacterEncodingFiltet 时 @conditionalOnMissingBean 这个注解,这里的 MissingBean 是用于判断容器是否存在该组件,判断成功则添加组件,判断失败则不添加组件。与之对应的是 @ConditionalOnBean 意为容器中不存在指定 Bean  ; ConditionalOnExpression 用于判断是否满足SpEL表达式指定; @ConditionalOnClass 也是同样的道理,用于判断容器中是否存在系统指定的类,没有才加,有就不加; @ConditionalOnMissingClass 注解用于判断系统中没有指定的类; @ConditionalOnProperty 注解用于判断配置文件中是否存在指定的属性,没有会自动添加。



相关文章
|
9月前
|
存储 数据库
PACS-诊断报告系统包括哪些内容 ?
PACS是影像归档与通信系统(Picture Archive and Communication System)的英文缩写,是应用在医院信息管理系统的影像信息系统,主要类别包括医学影像成像PACS、医学影像存档与通信系统、医学影像报告工作站、医学影像远程会诊系统。 PACS影像查看工作站是其中的一个子系统,完成对医学影像设备的接入,医学影像的采集、存储、管理、处理、调阅、查看以及诊断报告的书写等功能。
158 1
|
9月前
|
存储 运维 应用服务中间件
[运维日志] Web 服务器日志依日期归档(Powershell 实现,附源代码)
[运维日志] Web 服务器日志依日期归档(Powershell 实现,附源代码)
168 0
|
6月前
|
Linux 网络安全 数据安全/隐私保护
在Linux中,ptables是否支持time时间控制用户行为,如有请写出具体操作步骤。
在Linux中,ptables是否支持time时间控制用户行为,如有请写出具体操作步骤。
|
9月前
|
存储 算法 C语言
【C/C++ 应用开发 检测文件 】详解 C/C++ 中常用的 5 种文件存在检查方式
【C/C++ 应用开发 检测文件 】详解 C/C++ 中常用的 5 种文件存在检查方式
322 0
|
9月前
|
数据挖掘
dlookr包,自动输出一份数据诊断报告
dlookr包,自动输出一份数据诊断报告
277 0
|
运维 监控 关系型数据库
【运维知识进阶篇】zabbix5.0稳定版详解4(用脚本自定义监控项+监控MySQL状态信息)(一)
【运维知识进阶篇】zabbix5.0稳定版详解4(用脚本自定义监控项+监控MySQL状态信息)
177 0
|
运维 监控 关系型数据库
【运维知识进阶篇】zabbix5.0稳定版详解4(用脚本自定义监控项+监控MySQL状态信息)(二)
【运维知识进阶篇】zabbix5.0稳定版详解4(用脚本自定义监控项+监控MySQL状态信息)(二)
116 0
|
XML Dubbo 应用服务中间件
超时&配置覆盖关系|学习笔记
快速学习超时&配置覆盖关系
超时&配置覆盖关系|学习笔记
|
Java 开发者
【实验】-员工修改-重用页面&修改完成|学习笔记
快速学习【实验】-员工修改-重用页面&修改完成