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



相关文章
|
6月前
|
存储 运维 应用服务中间件
[运维日志] Web 服务器日志依日期归档(Powershell 实现,附源代码)
[运维日志] Web 服务器日志依日期归档(Powershell 实现,附源代码)
144 0
|
3月前
|
Oracle 关系型数据库 测试技术
《Oracle数据库管理员的利器:一键自动清理过期日志脚本详解》
【8月更文挑战第13天】在Oracle数据库管理中,日志文件的积累是一个需谨慎处理的问题。日志文件对故障恢复至关重要,但也可能占用大量磁盘空间。本文提供一个自动清理日志的脚本,帮助维护数据库健康。脚本通过定义日志路径和保留天数,使用`find`命令查找并删除过期日志,同时记录清理操作。使用前,请确认日志路径正确,并根据备份策略设置保留天数。通过给予脚本执行权限和配置定时任务(如cron),可实现自动清理,保持文件系统整洁,避免因日志文件过多引发的问题。务必在理解脚本原理并做好备份的情况下使用。
46 0
|
5月前
|
Android开发
aTimeLogger--时间追踪工具
aTimeLogger--时间追踪工具
|
6月前
|
数据挖掘
dlookr包,自动输出一份数据诊断报告
dlookr包,自动输出一份数据诊断报告
233 0
漏刻有时基础环境状态4个指标选项的更改说明
漏刻有时基础环境状态4个指标选项的更改说明
50 0
|
存储 Kubernetes Linux
k8s日志自动收集脚本
k8s日志自动收集脚本
188 0
|
运维 大数据 Windows
【大数据开发运维解决方案】windows定期清理指定目录文件(保留指定天数日志)
定期清理windows指定目录文件 1、编辑clean.bat脚本加入下面内容: 根据实际需要替换指定目录和时间,这里只保留F:\testbat目录最近七天的所有文件。 forfiles /p "F:\testbat" /s /m *.* /d -7 /c "cmd /c del @path" 保存退出 2、加入windows定期执行计划: 在win系统中,选择计算机管理-》系统工具-》任务计划...
【大数据开发运维解决方案】windows定期清理指定目录文件(保留指定天数日志)
|
存储 运维 Java
[powershell运维] Web 服务器日志依日期归档
本文记录了一个以 Jboss 服务器日志归档的 powershell 示范项目。该项目只需要略加修改,即可用于所有类似需要归档日志的场景。
138 0
|
XML Dubbo 应用服务中间件
超时&配置覆盖关系|学习笔记
快速学习超时&配置覆盖关系
159 0
超时&配置覆盖关系|学习笔记