说说 Spring Boot 的条件化注解
发布日期:2021-06-29 21:02:37
浏览次数:2
分类:技术文章
本文共 1474 字,大约阅读时间需要 4 分钟。
SpringBoot 定义了许多条件化注解,可以将它们用到配置类上,以说明生效条件。
条件化注解 | 生效条件 |
---|---|
@ConditionalOnBean | 配置了特定的 Bean。 |
@ConditionalOnMissingBean | 没有配置特定的 Bean。 |
@ConditionalOnClass | Classpath 里有指定的类。 |
@ConditionalOnMissingClass | Classpath 里没有指定的类。 |
@ConditionalOnExpression | 给定的 SpringExpressionLanguage(SpEL) 表达式计算结果为 true。 |
@ConditionalOnJava | Java 的版本匹配特定值或者一个范围值。 |
@ConditionalOnJndi | JNDI 参数必须存在。 |
@ConditionalOnProperty | 指定的属性有一个明确的值。 |
@ConditionalOnResource | Classpath 里存在指定的资源。 |
@ConditionalOnWebApplication | 是一个 Web 应用程序。 |
@ConditionalOnNotWebApplication | 不是一个 Web 应用程序。 |
比如 SpringBootWebSecurityConfiguration.java 的源码为:
@Configuration@ConditionalOnClass(WebSecurityConfigurerAdapter.class)@ConditionalOnMissingBean(WebSecurityConfigurerAdapter.class)@ConditionalOnWebApplication(type = Type.SERVLET)public class SpringBootWebSecurityConfiguration { @Configuration @Order(SecurityProperties.BASIC_AUTH_ORDER) static class DefaultConfigurerAdapter extends WebSecurityConfigurerAdapter { }}
SpringBootWebSecurityConfiguration 配置了三个条件化注解,也就是说 SpringBootWebSecurityConfiguration 必须在这些条件都满足的情况下,才能生效:
- Classpath 里有 WebSecurityConfigurerAdapter.class。
- 没有配置 WebSecurityConfigurerAdapter Bean。
- 是一个 Web 应用程序。
其中 ConditionalOnWebApplication 注解存在这些类型:
参数 | 说明 |
---|---|
SERVLET | 基于 servlet 的 web 应用程序。 |
REACTIVE | 基于 reactive 的 web 应用程序。 |
ANY | 上述两种都可以。 |
基于 reactive 的 web 应用程序是 Spring 5 新增的模块,名为 spring-webflux。 它可以用少量线程来处理 request 和 response io 操作,这些线程统称为 Loop 线程。那些业务中阻塞操作,会提交给响应式框架的 work 线程进行处理,而那些不阻塞的操作则在 Loop 线程中进行处理。通过这种方式,可以大大提高 Loop 线程的利用率。
转载地址:https://deniro.blog.csdn.net/article/details/103547250 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月27日 23时46分14秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
AppSettings和ConnectionStrings的区别
2019-04-30
Forms 身份验证
2019-04-30
ASP.NET 网页设计如何设置全局背景图片
2019-04-30
C#编程实现计算器
2019-04-30
C# 利用Jmail接收邮件
2019-04-30
VS运行出现This application is currently offline. To enable the application, remove the app_offline.
2019-04-30
datalist控件的DataSourceID与DataSource属性
2019-04-30
GridView的DataSourceID vs. DataSource属性
2019-04-30
asp.net 2.0数据绑定详解
2019-04-30
DataList使用eval方法绑定图片
2019-04-30
Server.MapPath详解(转)
2019-04-30
FileUpload1文件上传
2019-04-30
GridView.DataKeyNames 属性
2019-04-30
Marquee实现文字走马灯滚动效果
2019-04-30
asp.net2.0数据访问工具--DataSource
2019-04-30
asp.net c# SqlDataSource 控件
2019-04-30
使用FileUpload上传文件并向数据库插入一条记录
2019-04-30
类 对象 实例 方法 继承 封装 多态
2019-04-30