【spring】@ConditionalOnResource注解学习

@ConditionalOnResource 介绍

@ConditionalOnResource 是Spring框架中的一个条件化注解,它允许你根据类路径中是否存在指定的资源来决定是否加载特定的Bean定义或配置类。这个注解可以用于类级别或方法级别。

具体@Conditional使用请看这篇文章【spring】@Conditional注解学习-CSDN博客

类似@ConditionalOnResource注解还有下面:

@ConditionalOnResource 源码

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Conditional({OnResourceCondition.class})
public @interface ConditionalOnResource {
    String[] resources() default {};
}

@ConditionalOnResource 属性介绍

resources,它是一个字符串数组,用于指定需要检查的资源路径。你可以通过这个属性来指定多个资源路径,Spring框架会检查这些资源是否存在于类路径中。

@ConditionalOnResource(resources = { "classpath:conditional-config.xml", "classpath:conditional-other-config.properties" })

resources 属性支持通配符,例如 * 和 ?。你可以使用通配符来匹配多个资源。例如:

@ConditionalOnResource(resources = "classpath:conditional-config*.xml")

 @Conditional测试示例代码

示例代码 一
ConditionalDemo类
package com.yang.SpringTest.annotation.conditionalLearn;

import lombok.Data;

/**
 * <p>description</p>
 *
 * @author By: chengxuyuanshitang
 * Package com.yang.SpringTest.annotation.conditionalLearn
 * Ceate Time 2024-03-20 14:55
 */
@Data
public class ConditionalDemo {
}
创建conditional.properties文件

                

ConditionalDemoConfig配置类
package com.yang.SpringTest.annotation.conditionalLearn;

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.condition.ConditionalOnResource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;

/**
 * <p>配置类</p>
 *
 * @author By: chengxuyuanshitang
 * Package com.yang.SpringTest.annotation.conditionalLearn
 * Ceate Time 2024-03-20 14:54
 */
@Slf4j
@Configuration
@ConditionalOnResource(resources = "classpath:conditional.properties")
public class ConditionalDemoConfig {
    @Bean
    public ConditionalDemo demo() {
        log.info("------------- ConditionalDemo init -------------");
        return new ConditionalDemo();
    }
}
ConditionalTest测试类
package com.yang.SpringTest.annotation.conditionalLearn;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import java.util.Arrays;

/**
 * <p>测试类</p>
 *
 * @author By: chengxuyuanshitang
 * Package com.yang.SpringTest.annotation.conditionalLearn
 * Ceate Time 2024-03-20 14:58
 */

public class ConditionalTest{
        public static void main(String[] args) {
            AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ConditionalDemoConfig.class);
            String[] definitionNames = context.getBeanDefinitionNames();
            Arrays.stream(definitionNames).forEach((definitionName) -> System.out.println(definitionName));
        }
}
运行结果

删除conditional.properties文件
再次运行结果




相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-24 21:00:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-24 21:00:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-24 21:00:03       87 阅读
  4. Python语言-面向对象

    2024-03-24 21:00:03       96 阅读

热门阅读

  1. 软件测试面试问题总结—CTO面试

    2024-03-24 21:00:03       48 阅读
  2. 小程序调用相机拍照上传

    2024-03-24 21:00:03       38 阅读
  3. python基础练习题5

    2024-03-24 21:00:03       37 阅读
  4. 学习AIGC大模型的步骤

    2024-03-24 21:00:03       42 阅读
  5. 【二进制计算,逆序,每位求和】

    2024-03-24 21:00:03       40 阅读
  6. Python从入门到精通秘籍十七

    2024-03-24 21:00:03       44 阅读
  7. 用C++做一个植物大战僵尸

    2024-03-24 21:00:03       44 阅读
  8. day9 嵌套排序,利用嵌套循环所写的简单时钟

    2024-03-24 21:00:03       36 阅读
  9. LLM推理及加速知识

    2024-03-24 21:00:03       36 阅读
  10. 蓝桥杯:数的分解

    2024-03-24 21:00:03       41 阅读
  11. Python下载音乐

    2024-03-24 21:00:03       46 阅读
  12. 扫雷(c++题解)

    2024-03-24 21:00:03       39 阅读
  13. golang通过参数控制HTTP server是否使用基本认证

    2024-03-24 21:00:03       39 阅读
  14. ZooKeeper

    ZooKeeper

    2024-03-24 21:00:03      35 阅读