@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 注解用于判断配置文件中是否存在指定的属性,没有会自动添加。



相关文章
|
4月前
|
运维 监控 Java
函数计算产品使用问题之怎么在运行环境中更改时区
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
4月前
|
Linux 网络安全 数据安全/隐私保护
在Linux中,ptables是否支持time时间控制用户行为,如有请写出具体操作步骤。
在Linux中,ptables是否支持time时间控制用户行为,如有请写出具体操作步骤。
|
4月前
|
Oracle 关系型数据库 测试技术
《Oracle数据库管理员的利器:一键自动清理过期日志脚本详解》
【8月更文挑战第13天】在Oracle数据库管理中,日志文件的积累是一个需谨慎处理的问题。日志文件对故障恢复至关重要,但也可能占用大量磁盘空间。本文提供一个自动清理日志的脚本,帮助维护数据库健康。脚本通过定义日志路径和保留天数,使用`find`命令查找并删除过期日志,同时记录清理操作。使用前,请确认日志路径正确,并根据备份策略设置保留天数。通过给予脚本执行权限和配置定时任务(如cron),可实现自动清理,保持文件系统整洁,避免因日志文件过多引发的问题。务必在理解脚本原理并做好备份的情况下使用。
63 0
|
6月前
spdlog 日志库部分源码说明——让你可以自定义的指定自动切换日志时间
spdlog 日志库部分源码说明——让你可以自定义的指定自动切换日志时间
159 7
|
6月前
|
Android开发
aTimeLogger--时间追踪工具
aTimeLogger--时间追踪工具
|
人工智能 Python
项目自动贩卖机
用python语言编写项目自动贩卖机。
321 3
|
7月前
|
关系型数据库 MySQL 数据库
mysqwl 数据库 设置默认时间 datetime 和 timestamp 实测
mysqwl 数据库 设置默认时间 datetime 和 timestamp 实测
43 0
|
Prometheus Kubernetes Cloud Native
Flagger(应用自动发布)介绍和原理剖析
## 简介 [Flagger](https://github.com/weaveworks/flagger)是一个能使运行在k8s体系上的应用发布流程全自动(无人参与)的工具, 它能减少发布的人为关注时间, 并且在发布过程中能自动识别一些风险(例如:RT,成功率,自定义metrics)并回滚. ## 主要特性 ![features](https://intranetproxy.ali
4500 0
|
XML Dubbo 应用服务中间件
超时&配置覆盖关系|学习笔记
快速学习超时&配置覆盖关系
超时&配置覆盖关系|学习笔记
|
Java 开发者
【实验】-员工修改-重用页面&修改完成|学习笔记
快速学习【实验】-员工修改-重用页面&修改完成