【SpringBoot】@ConditionalOnProperty 条件注解

SpringBoot @ConditionalOnProperty 注解

简介

@ConditionalOnProperty:根据属性值来控制类或某个方法是否需要加载。它既可以放在类上也可以放在方法上

@ConditionalOnProperty属性

@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.TYPE, ElementType.METHOD })
@Documented
@Conditional(OnPropertyCondition.class)
public @interface ConditionalOnProperty {/*** name别名,数组类型,获取对应property名称的值,与name不能同时使用*/String[] value() default {};/*** 属性前缀,未指定时,自动以点"."结束,有效前缀由一个或多个词用点"."连接。比如spring.http.encoding* 如:spring.datasource*/String prefix() default "";/*** 属性名称,配置属性完整名称或部分名称,可与prefix组合使用,不能与value同时使用*/String[] name() default {};/*** 可与name组合使用,比较获取到的属性值与havingValue的值是否相同,相同才加载配置*/String havingValue() default "";/*** 缺少该配置属性时是否加载,默认为false。如果为true,没有该配置属性时也会正常加载;反之则不会生效*/boolean matchIfMissing() default false;
}

使用方法

@ConditionalOnProperty的核心功能是通过属性name以及havingValue来实现的。

matchIfMissing 属性

如果配置文件中未进行对应属性配置时的默认处理:默认情况下matchIfMissing为false,也就是说如果未进行属性配置,则自动配置不生效。
如果matchIfMissing为true,则表示如果没有对应的属性配置,则自动配置默认生效。

name 属性

从配置文件 application.properties / application.yml中读取某个属性值.

注意:matchIfMissing为false时, name 如果为空,则返回false,如果name 不为空,那就会去与havingValue判断。如果一样则返回true,反之返回false,返回false 的话,就不会去加载了哦

havingValue

匹配属性里的值

非常简单的示例

配置文件

# 是否加载
is_load_bean: true
@Slf4j
@Configuration
public class LoadConditionalProperty {@Value("${is_load_bean}")private String isLoadBean;@Bean@ConditionalOnProperty(value = "is_load_bean",havingValue = "true",matchIfMissing = true)public void loadBean(){log.info("是否加载当前类");}@Beanpublic void compareLoadBean(){log.info("加载bean属性:" + isLoadBean);}
}

我们可以通过修改配置文件中is_load_bean的值,观察BEAN是否加载。

补充个例子

假如我们需要把User加载到 容器里面。

public class User {
}
@Slf4j
@Configuration
public class UserConfig {@Bean@ConditionalOnProperty(value = "is_load_bean",havingValue = "true",matchIfMissing = true)public User user(){return new User();}
}

最后的最后

像此类的注解还是有很多,比如:

注解名称说明
@ConditionalOnClass当Spring加载的Bean被@ConditionOnClass注解标记时,类加载器会先去先找到指定的Class, 如果没有找到目标Class,那么被ConditionOnClass注解标记的类不会被Spring装载
@ConditionalOnMissingClass跟上面相反,ConditionalOnMissingBean是指如果没有找到目标Class, 那么就装载该类
@ConditionalOnBean当Spring加载的Bean被@ConditionalOnBean注解标记时,接下来会先找到指定的Bean,如果没有找到目标Bean,那么被@ConditionalOnBean标记的类不会被Spring装载
@ConditionalOnMissingBean跟上面相反,ConditionalOnMissingBean是指如果没有Class, 那么就装载该Bean。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/5156.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GStreamer Playback tutorial 学习笔记(一)

playbin运用 多流处理:一个电影,对应一个视频和多个音频流(立体声/5.1声道被视为一个单独的流),以适应不同的语言。在这种情况下,用户选择一个音频流,应用程序只播放选定的音频流,忽…

安卓:Fragment

目录 一、Fragment介绍 二、Fragment的使用方式 (一)、Fragment静态添加: 静态添加例子: FirstFragment : MainActivity: main_activity: fragment_first: 静态添加的总结: (二&…

Android 中app内存回收优化(一):R版本

版本基于:Android R 0. 前言 Android Q 中新增了framework 端app 内存回收优化方案。当app 的 oom adj 发生特定变化时,framework 端会对应用的内存进行处理。随着版本的演变,这部分优化工作也一直在完善,笔者将针对 Android R 和…

Java-通过IP获取真实地址

文章目录 前言功能实现测试 前言 最近写了一个日志系统,需要通过访问的 IP 地址来获取真实的地址,并且存到数据库中,我也是在网上看了一些文章,遂即整理了一下供大家参考。 功能实现 这个是获取正确 IP 地址的方法,可…

脚本定制gitlab官方api获取项目组下的所有项目

脚本说明 通过gitlab官方api接口获取项目组下的所有项目的ssh_git连接并同步项目仓库 #!/bin/bash urlhttps://gitee.xxxxx.cn dir/usr/src/redmine/git-repo group_id69 token2dskWweijirdrrm9UERvcd ${dir}#获取所有项目ssh_url_to_repo curl -s "${url}/api/v4/group…

域内信息收集

将网络中多台计算机逻辑上组织到一起进行集中管理,这种区别于工作组的逻辑环境叫 做域。域是由域控制器(Domain Controller)和成员计算机组成,域控制器就是安装了活动 目录(Active Directory)的计算机。活动目录提供了存储网络上对象信息并使用网络使用该…

uniapp H5预览PDF文件

1&#xff0c;下载资源后hybrid文件存放在static静态文件里 (点击这里去下载文件) 2&#xff0c;pdf预览页面配置 <template><view style"width: 100vh;"><web-view :src"pdfUrl"></web-view></view> </template><…

全面深入理解MySQL自增锁

&#x1f497;推荐阅读文章&#x1f497; &#x1f338;JavaSE系列&#x1f338;&#x1f449;1️⃣《JavaSE系列教程》&#x1f33a;MySQL系列&#x1f33a;&#x1f449;2️⃣《MySQL系列教程》&#x1f340;JavaWeb系列&#x1f340;&#x1f449;3️⃣《JavaWeb系列教程》…

【HarmonyOS】元服务隐私协议开发指导样例

【关键字】 隐私、弹窗、元服务、协议 【介绍】 每个元服务必须提供隐私声明&#xff0c;否则将导致提交元服务发布上架时&#xff0c;审核无法通过。隐私声明的具体要求请参见隐私声明规范。用户使用元服务前&#xff0c;必须引导其了解隐私声明信息&#xff0c;获取用户授权…

【NLP】一项NER实体提取任务

一、说明 从文本中提取实体是一项主要的自然语言处理 (NLP) 任务。由于深度学习(DL)的最新进展使我们能够将它们用于NLP任务,并且与传统方法相比,在准确性上产生了巨大的差异。 我试图使用深度学习和传统方法从文章中提取信息。结果是惊人的,因为DL方法…

tcpdump 使用

Linux tcpdump抓包工具使用 tcpdump官网tcpdump使用tcpdump抓取http请求 tcpdump官网 官网 请参考官网参看具体参数信息 tcpdump使用 tcpdump抓取http请求 http请求抓取参考网址 //抓取HTTP GET (GET 0x47, 0x45, 0x54, 0x20) 请求,以ascii展示 tcpdump -i eth0 -A -s 0 …

C#被指定窗体的MdiParent的窗体不是MdiContainer

工作的时候遇到一个问题&#xff1a; 被指定窗体的MdiParent的窗体不是MdiContainer 这个问题的原因是父窗体的IsMdiContainer 属性设置为false导致的。将此属性设置为true&#xff0c;即可解决此问题。有两种方式设置窗体的IsMdiContainer 属性。 第一种&#xff0c;在父窗口…

Chrome远程调试webview

网址 谷歌远程调试解决方案 https://blog.csdn.net/m0_56516186/article/details/131260563Chrome远程调试webview https://blog.csdn.net/weixin_44801980/article/details/117755550

Editing Large Language Models: Problems, Methods, and Opportunities

本文是LLM相关的系列文章&#xff0c;针对《Editing Large Language Models: Problems, Methods, and Opportunities》的翻译。 编辑大语言模型&#xff1a;问题、方法和机遇 摘要1 引言2 问题定义3 当前方法3.1 保留LLM参数的方法3.2 修改LLM参数的方法 4 初步实验4.1 数据集…

python实现拼多多商品详情接口API

最近工作需要用到拼多多的一些接口&#xff0c;官方竟然没有提供&#xff0c;python的sdk&#xff0c;于是就自己简单的写了一个商品SKU接口的api。 1、代码 #!/usr/bin/python3# -*- coding: utf-8 -*-# Time : 2020/3/29 0021 下午 19:40# Author : xiaozhi&#xff01;…

201. 数字范围按位与 Python

文章目录 一、题目描述示例 1示例 2示例 3 二、代码三、解题思路 一、题目描述 给你两个整数 left 和 right &#xff0c;表示区间 [left, right] &#xff0c;返回此区间内所有数字 按位与 的结果&#xff08;包含 left 、right 端点&#xff09;。 示例 1 输入&#xff1a…

「深度学习之优化算法」(十六)万有引力算法

1. 万有引力算法简介 (以下描述,均不是学术用语,仅供大家快乐的阅读) 万有引力算法(Gravitational Search Algorithm)是受物体之间的万有引力启发而提出的算法。算法提出于2008(2009)年,时间不长,不过相关的文章和应用已经相对较多,也有不少的优化改进方案。   万…

apple pencil二代平替笔哪个好用?苹果平板平替笔排行

光是一款Apple Pencil&#xff0c;就卖到了接近一千多块&#xff0c;信息对于很多人来说都觉得太贵了。事实上&#xff0c;由于平替电容笔的性价比也非常高&#xff0c;因此它还是值得一试的。不管是学习&#xff0c;写作&#xff0c;还是绘画&#xff0c;这支平替电容笔&#…

自洽性改善语言模型中的思维链推理7.13、7.14

自洽性改善语言模型中的思维链推理 摘要介绍对多样化路径的自洽实验实验设置主要结果当CoT影响效率时候&#xff0c;SC会有所帮助与现有方法进行比较附加研究 相关工作总结 原文&#xff1a; 摘要 本篇论文提出了一种新的编码策略——自洽性&#xff0c;来替换思维链中使用的…

AI绘画 | 迷人武士美少女战士作品集

今天用Midjourney生成了质量极高的美少女武士后续会作为固定栏目来分享美图接下来请欣赏作品 提示词分享&#xff1a;1.an asian girl dressed in samurai style, in the style of anime aesthetic, trick of the eye paintings, dollcore, light red and black, resin, 8k, ex…