首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在@ConditionalOnProperty设置为false的情况下加载类。

在Spring框架中,@ConditionalOnProperty注解用于根据配置属性来决定是否加载某个Bean。当该注解的name属性指定的属性值与havingValue属性指定的值匹配时,条件成立,对应的Bean才会被加载。

如果你希望在@ConditionalOnProperty设置为false的情况下仍然加载某个类,可以通过以下几种方法实现:

方法一:使用@ConditionalOnMissingBean

你可以创建一个自定义的条件注解,并结合@ConditionalOnMissingBean来实现。

代码语言:txt
复制
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class CustomConfig {

    @Bean
    @ConditionalOnMissingBean
    public MyService myService() {
        return new MyServiceImpl();
    }
}

在这个例子中,MyService会在没有其他相同类型的Bean时被加载。

方法二:使用@Profile

你可以使用Spring的@Profile注解来指定在特定的profile下加载Bean。

代码语言:txt
复制
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

@Configuration
public class ProfileConfig {

    @Bean
    @Profile("!conditionalOnProperty")
    public MyService myService() {
        return new MyServiceImpl();
    }
}

在这个例子中,MyService会在profile为conditionalOnProperty以外的情况下被加载。

方法三:手动注册Bean

你可以在配置类中手动注册Bean,而不使用条件注解。

代码语言:txt
复制
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ManualConfig {

    @Bean
    public MyService myService() {
        return new MyServiceImpl();
    }
}

在这个例子中,MyService会始终被加载,不受@ConditionalOnProperty的影响。

应用场景

  • 开发环境:在开发环境中,你可能希望某些Bean始终加载,以便于调试和测试。
  • 特定需求:某些功能可能需要在所有环境下都可用,不受配置属性的影响。

参考链接

通过以上方法,你可以在@ConditionalOnProperty设置为false的情况下加载类。选择哪种方法取决于你的具体需求和应用场景。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Spring Boot中@ConditionalOnProperty使用详解

如果为true,没有该配置属性时也会正常加载;反之则不会生效 boolean matchIfMissing() default false; } 其中在历史版本中还存在一个relaxedNames属性...首先看matchIfMissing属性,用来指定如果配置文件中未进行对应属性配置时的默认处理:默认情况下matchIfMissing为false,也就是说如果未进行属性配置,则自动配置不生效。...false时,如果name值为空,则返回false;如果name不为空,则将该值与havingValue指定的值进行比较,如果一样则返回true,否则返回false。...返回false也就意味着自动配置不会生效。 但是如果看HttpEncodingAutoConfiguration类上的属性配置发现并没有完全按照上面所说的name和havingValue配合使用。...这里并没有设置havingValue的值,如果havingValue未指定值,默认情况下在属性配置中设置的值为true则生效(如上配置),false则不生效。

3.9K10
  • SpringBoot遗忘知识点整理

    注解的使用 坑===> @DateTimeFormat无效原因 @ConditionalOnProperty TIMESTAMP设置为CURRENT_TIMESTAMP 不能自动插入当前时间 @transient...class FilterConfig { //prefix为配置文件中的前缀, //name为配置的名字 //havingValue是与配置的值对比值,当两个值相同返回true,配置类生效....filter.loginFilter=true 总结: 通过@ConditionalOnProperty控制配置类是否生效,可以将配置与代码进行分离,实现了更好的控制配置....@ConditionalOnProperty实现是通过havingValue与配置文件中的值对比,返回为true则配置类生效,反之失效. ---- TIMESTAMP设置为CURRENT_TIMESTAMP...注解 重点来了: 就像是说---->添加了@Transient注解的数据将会加载到使用者的电脑内存中,而不会被加载到磁盘里持久化,不保存数据,但是使用的时候一直存在.

    45410

    SpringBoot自动配置的原理及实现

    @SpringBootConfiguration:标记当前类为配置类 @EnableAutoConfiguration:开启自动配置 @ComponentScan:扫描主类所在的同级包以及下级包里的...,属性为enabled,有值时为true,没有匹配到则为false:以上条件为true则实例化,否则不是实例化 @ConditionalOnProperty( prefix = "spring.application.admin...都能看到各种各样的条件判断注解,满足条件时就加载这个Bean并实例化 此类的条件注解是:@ConditionalOnProperty @ConditionalOnBean:当容器里有指定Bean的条件下...@ConditionalOnClass:当类路径下有指定的类的条件下 @ConditionalOnExpression:基于SpEL表达式为true的时候作为判断条件才去实例化 @ConditionalOnJava...=enabled的情况下,如果没有设置则默认为true,即条件符合 @ConditionalOnMissingBean当容器中没有这个Bean时新建Bean 案例扩展 /** * @author wuweifeng

    36830

    为了控制Bean的加载我使出了这些杀手锏

    通过@ConditionalOnProperty 来决定 MqConfig 是否要加载,@ConditionalOnProperty 的 name 就是配置项的名称,havingValue 就是匹配的值...方案一:@ConditionalOnProperty 还是坚持使用@ConditionalOnProperty,既然不能通过环境来,我们可以单独增加一个属性来决定是否要启用 Mq, 比如定义为:mq.enabled...方案二:继承 SpringBootCondition 自定义条件 可以使用@Conditional(MqConditional.class)注解,自定义一个条件类,在类中去判断是否要加载 bean。...在类中可以使用其他的 Conditional 注解来进行判断,比如使用@ConditionalOnProperty。...所以需要在依赖的时候设置 Feign 的 Maven 依赖 optional=true,让使用者自己去引入依赖。

    1.2K40

    为了控制Bean的加载我使出了这些杀手锏

    通过@ConditionalOnProperty 来决定 MqConfig 是否要加载,@ConditionalOnProperty 的 name 就是配置项的名称,havingValue 就是匹配的值...方案一:@ConditionalOnProperty 还是坚持使用@ConditionalOnProperty,既然不能通过环境来,我们可以单独增加一个属性来决定是否要启用 Mq, 比如定义为:mq.enabled...方案二:继承 SpringBootCondition 自定义条件 可以使用@Conditional(MqConditional.class)注解,自定义一个条件类,在类中去判断是否要加载 bean。...在类中可以使用其他的 Conditional 注解来进行判断,比如使用@ConditionalOnProperty。...所以需要在依赖的时候设置 Feign 的 Maven 依赖 optional=true,让使用者自己去引入依赖。

    49730

    SpringBoot如何创建一个自定义注解

    @Target:用于描述注解的使用范围,依赖于枚举类ElementType ,具体如下:public enum ElementType { /**用于描述类、接口(包括注解类型) 或enum声明...通常情况下,Java编译器在生成文档时不会包含注解信息,但是使用了@Documented注解后,编译器会将被注解的元素的注解信息包含在生成的文档中,这样可以使得开发者在查看文档时能够更清晰地了解被注解元素的相关信息...@Around: 包围一个连接点(join point)的通知,如方法调用。这是最强大的一种通知类型。 环绕通知可以在方法调用前后完成自定义的行为。...“登录、退出登录” 此时type可以使用统一的字符串,这样可以将关于用户行为的日志全部查出 然后再根据不同的name将这些日志进一步细分 * name同时也用于前端显示 在上述例子中,可以将type设置为...“user.operation” 登录的name设置为“用户登录” 退出登录的name设置为“退出登录” * * @author 奇怪 */@Target({ElementType.METHOD})@Retention

    36410

    14-SpringBoot自动配置-Condition

    ,ClassCondition 重写的 matches 方法默认返回为 false,所以我们下面使用 IOC 获取 user bean 对象会失败,如下: 如果设置为 true,那么则可以获取到 bean...案例2 - 通过动态指定启动坐标的配置,判断是否创建 bean 对象 需求 在Spring的 IOC 容器中创建一个User的bean,现要求: 将类的判断定义为动态的。...} 2.在创建 Bean 方法换上使用自定义的条件注解类,并指定希望设置的依赖类 @Bean //@Conditional(ClassCondition.class) // 定义ClassCondition...false,不允许创建bean flag = false; } return flag; } } 6.测试验证 首先当然是验证设置了依赖的情况...演示使用 ConditionalOnProperty 注解 1.编写创建 user bean 的方法,需要设置 ConditionalOnProperty 定义需要的属性值 image-20220224204200775

    55020

    教你写Spring组件

    组件的接入方式 三、使用简单配置类接入方式 使用配置类接入 Spring ,一般需要搭配 PostConstruct 来使用,并且要确保 Spring 能扫描到配置 如,在组件 quartz-configable...,这是因为有 @ConditionalOnProperty 的存在 @ConditionalOnProperty 的作用: 根据提供的条件判断对应的属性是否存在,存在,则加载此配置类,不存在,则忽略。...,比如,应用类路径常常为 com.xxx.xxx,而组件的类路径常常为 com.xxx.yyy,这时候,经常需要为 Spring 指定扫描路径,才能把我们的组件加载进去,如果在自己项目当中加载上述 quartz-configable...Springboot 在加载类的时候,会扫描 classpath 下的 META-INF/spring.factories 文件,当发现了 spring.factories 文件后,根据文件中的配置来加载类...要加载的自动配置类,Springboot根据配置自动去加载配置类 借用这个规则,现在来升级我们的 quartz-configable 组件 我们在组件项目 resources 目录下添加 META-INF

    50620

    SpringBoot基础篇Bean之条件注入@ConditionalOnProperty

    本文将主要介绍根据配置来决定是否创建bean的注解@ConditionalOnProperty <!...配置如下 /** * 配置存在时才会加载这个bean * * @return */ @Bean @ConditionalOnProperty("conditional.property") public...propertyValueNotExistBean.getName()); return JSONObject.toJSONString(result); } } 执行后结果如下,一如预期...更多博文 基础篇 181009-SpringBoot基础篇Bean之基本定义与使用 181012-SpringBoot基础篇Bean之自动加载 181013-SpringBoot基础篇Bean之动态注册...声明 尽信书则不如,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激 微博地址: 小灰灰Blog QQ: 一灰灰/3302797840

    6.7K01

    使用@ConditionalOnProperty注解

    { /** * String数组 该属性与下面的 name 属性不可同时使用, * 当value所对应配置文件中的值为false时,注入不生效,不为fasle注入生效 *...havingValue的值相同时,注入生效 */ String havingValue() default ""; /** * 配置中缺少对应的属性时,是否可以被注入;为true时缺少对应配置可注入 *.../ boolean matchIfMissing() default false;} */ String havingValue() default ""; /** *该属性为true时,配置文件中缺少对应的...value或name的对应的属性值,也会注入成功 */ boolean matchIfMissing() default false; // 对应的测试注入情况 @Configuration @ConditionalOnProperty...(prefix = "parentName",name = {"sonName","flag"})  //name中的属性需要两个都存在且都不为false才会加载正常 .yml配置如下:     parentName

    2.9K30

    SpringBoot中的@Conditional注解

    SpringBoot中的@Conditional注解 一、介绍 在Spring的应用下,我们希望一些bean可以通过一些条件来判断是否需要实例化,并加载到spring容器中。...>[] parameterizedContainer() default {}; } 3)@ConditionalOnProperty 看名字也就能看的出来,是指从配置文件加载,用来进行条件判断。...如果未指定,则该属性不得等于 false */ String havingValue() default ""; /** * 如果未设置属性,则指定条件是否应匹配。...默认为false */ boolean matchIfMissing() default false; } 还有一段不好翻译,给予截图吧,指的是havingValue属性的使用。...判断是否缺失了某个java类 @ConditionalOnWebApplication 判断当前是否为web环境 @ConditionalOnNotWebApplication 判断当前是否不为web

    47140

    SpringBoot的条件装配,彻底爱了!

    SpringBoot为开发者提供了三种可选的条件装配方式。 Profile Conditional ConditionalOnProperty 下面,我们一起来了解一下具体的应用实践。...如果当前的Profile设置为dev,则Spring容器会调用initFileUploader()创建FileUploader,否则,调用initOSSUploader()创建OSSUploader。...:在Web环境中条件生效 ConditionalOnExpression:根据表达式判断条件是否生效 我们以最常用的@ConditionalOnProperty注解为例,将上面的代码改成如下方式即可实现按照条件进行加载...,会加载FileUploader类;当file.storage配置值为oss,会加载OSSUploader类。...其中@ConditionalOnProperty中的matchIfMissing参数表示,当没有找到对应配置参数时,会默认加载当前类,也就是FileUploader类。

    36620

    SpringBoot中的条件装配,彻底爱了!

    SpringBoot为开发者提供了三种可选的条件装配方式。 Profile Conditional ConditionalOnProperty 下面,我们一起来了解一下具体的应用实践。...如果当前的Profile设置为dev,则Spring容器会调用initFileUploader()创建FileUploader,否则,调用initOSSUploader()创建OSSUploader。...:在Web环境中条件生效 ConditionalOnExpression:根据表达式判断条件是否生效 我们以最常用的@ConditionalOnProperty注解为例,将上面的代码改成如下方式即可实现按照条件进行加载...,会加载FileUploader类;当file.storage配置值为oss,会加载OSSUploader类。...其中@ConditionalOnProperty中的matchIfMissing参数表示,当没有找到对应配置参数时,会默认加载当前类,也就是FileUploader类。

    83520
    领券