@Conditional+@Configuration有没有搞头?

这篇具有很好参考价值的文章主要介绍了@Conditional+@Configuration有没有搞头?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

日拱一卒,功不唐捐。

在了解 @Conditional 之前先花 10 秒钟复习一下 @Configuration 这个注解。

@Configuration 是干什么?

是配合 @Bean 注解来配置 Spring 容器的 bean 的。

那它为什么会出现呢?

因为配置 bean 的另一种方式是 xml ,狗都不用。

那给个示例看看呗?

简单。

@Configuration
public class AppConfig {
    @Bean
    public MyBean myBean() {
        // 初始化, 配置, 返回bean...
    }
}

下面进入主题:

@Conditional 是什么东西?

首先明确第一点:

@Conditional 是 Spring 提供的。

其次明确第二点:

Conditional 中文译为:有条件的,依...而定的。

前边既然讲了 @Configuration 的简单用法,那么问题就是:

@Configuration + @Conditional 有没有搞头?

有搞头。

怎么搞?

那就是可以给@Configuration加上一个开关。

我打开开关,你这配置就好用。

我关闭开关,你这配置就不好用。

进一步升级。

我给 @Configuration 里的 @Bean 加一个开关。

我打开开关,你这 bean 就注册。

我关闭开关,你这 bean 就不注册。

那开关在哪里呢?

废话不多说,先上代码。

@Configuration
@Conditional(MyCondition.class)
public class ConditionConfig {
    @Bean
    public ConditionBean conditionBean() {
        return new ConditionBean();
    }
}

开关就是代码中的 MyCondition.class

WTF is MyCondition.class ?

MyCondition类就是我们自定义的开关,我们定义什么时候开,什么时候关的逻辑。

很明显这个逻辑不可能是 Spring 给的。

但 Spring 又必须插手管理。

通过什么呢?

@Conditional+@Configuration有没有搞头?

没错,通过接口 Condition

这个接口中什么都没有,只有一个 matches 方法,返回一个 boolean 值。

显而易见,你返回 true, 开关打开,返回 false,开关关闭。

MyCondition 类代码如下:

    public class MyCondition implements Condition {
        @Override
        public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
            return true;
        }
    }

可以看到 matches 方法中的两个参数,可以简单介绍一下。

ConditionContext context 这个参数提供了一种方法来访问关于Spring容器的信息。

AnnotatedTypeMetadata metadata 这个参数提供了对被注解类的元数据的访问。

基于这两个参数我们就可以创建复杂和动态的条件来控制开关的闭合

例如,你可以基于环境变量、定义的bean、类的存在等因素,来决定是否创建某个bean。

@Conditional+@Configuration有没有搞头?

除了自定义 Condition,Springboot 还为我们扩展了一些常用的 Condition。


@Conditional+@Configuration有没有搞头?文章来源地址https://www.toymoban.com/news/detail-777076.html

到了这里,关于@Conditional+@Configuration有没有搞头?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 有没有高效便捷的视频下载工具?

    做影视剪辑或者后期工作的小伙伴们,经常需要扒一些视频作为素材,今天给大家分享四个高效便捷的视频下载工具,总有一个你满意的! 一、 Downni 一个超级视频下载工具,支持全网1000+平台视频的解析,页面清爽整洁,功能一目了然,支持不同分辨率的格式下载,还可以

    2024年02月08日
    浏览(52)
  • 使用键盘测试图解(测试键盘有没有失灵)

    键盘是很容易坏的电脑外置设备,也是必不可少的电脑用品,经常使用电脑 特别是程序猿(媛)更是每天都在使用 键盘很容易出现问题,键盘失灵后有的字或者数字打不出来特别烦人。这里给您提供一个方法,测试您键盘按键的好坏在线测试工具,每按一下键盘上按键,就

    2024年02月12日
    浏览(50)
  • 怎么知道网站服务器有没有被攻击?

    ​ 一个网站服务器遭到攻击可能会给企业带来巨大的金融损失,因此,企业需要及时发现服务器是否被攻击。但是,企业如何知道自己的服务器是否被攻击呢?下面,我们来看一些服务器被攻击的警告信号。   1.网络延迟增加 在网络攻击中,攻击者的行为会导致服务器和网络

    2024年02月02日
    浏览(191)
  • 我有一个方法判断你有没有编程天赋

    我有一个方法判断你有没有编程天赋 做一个敲击者很难。问题在于敲击者已拥有的知识(歌曲题目)让 他们想象不到缺乏这种知识会是什么情形。当他们敲击的时候,他 们不能想象听众听到的是那些独立的敲击声而不是一首曲子。这就 是“知识的诅咒”。 一旦我们知道某

    2024年02月02日
    浏览(54)
  • 软考中级到底有没有用?价值高吗?

    软考中级证书是国家计算机技术与软件专业职业资格认证的一种,是IT行业中较为实用的证书之一。它对于个人职业发展和企业提升都有着重要的意义。本文将从个人和企业两个角度来探讨软考中级证书的价值。 1.提高职业技能水平 软考中级证书是一种专业水平的认证,证明

    2023年04月15日
    浏览(48)
  • ubuntu 系统 怎么判断系统有没有GPU

    在 Ubuntu 系统中,您可以通过几种方式来检查系统是否包含显卡,以及显卡的详细信息。以下是一些常用的方法: lspci 命令 : 打开终端。 输入 lspci | grep VGA 命令。 这将显示系统中所有的 VGA 兼容设备,通常是您的显卡。 lshw 命令 : 在终端中输入 sudo lshw -C display 。 这将提供

    2024年04月15日
    浏览(49)
  • Level 2 十档行情到底有没有用?

    这两年股市操作难度很大,很多券商和三方平台都推出了Level 2 十档行情的工具来辅助大家炒股,像有些券商会给20w以上的客户 免费送Level 2 十档行情 。像同花顺这种平台,Level 2 行情一年的费用就是 298元 ,所以如果可以 免费 拿到这个辅助工具,还是很划算的! 但是你真的

    2024年02月09日
    浏览(44)
  • 有没有可以代替风铃系统的专业问卷工具?

    风铃系统问卷是一种流行的调查和数据分析工具,已广泛应用于学术研究、市场营销和社会科学。然而,有几种替代产品提供了与风铃系统类似的特性和功能,可以被企业用来进行调查和分析数据。在这篇文章中,我们将介绍 风铃系统的十大替代产品 以及它们的特点。 1、

    2024年02月09日
    浏览(49)
  • “我30岁了,转行IT行业!还有没有出路?”

    人到30,就容易产生中年危机。俗话说30而立,但其实很不容易,成家不易、立业也不易,尤其是现如今房价这么贵,物价那么高,各种压力随之而来。在职场中工作了几年,到近30岁时如果还是没有太大进展,就会愈发觉得焦虑和不安。 这个时候就会想到转行,但是30岁了还

    2024年02月12日
    浏览(44)
  • 如何查看 Chrome 网站有没有前端 JavaScript 报错?

    您可以按照以下步骤在Chrome中查看网站是否存在前端JavaScript报错: 首先,打开Chrome浏览器并访问您想要检查JavaScript报错的网站。 在Chrome浏览器中,按下\\\"Ctrl+Shift+I\\\"(在Windows和Linux上)或\\\"Cmd+Option+I\\\"(在macOS上)快捷键,打开开发者工具。 在开发者工具窗口中,点击位于顶部

    2024年02月15日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包