`

Spring Boot @Conditional注解

 
阅读更多
Spring Boot的强大之处在于使用了Spring 4框架的新特性:@Conditional注释,此注释使得只有在特定条件满足时才启用一些配置。

下面来介绍如何使用Condition

首先写一个类

package com.test.spring;  
  
import org.springframework.context.annotation.Condition;  
import org.springframework.context.annotation.ConditionContext;  
import org.springframework.core.type.AnnotatedTypeMetadata;  
  
public class MyCondition implements Condition  
{  
    /** 
     * 这里写自己的逻辑,只有返回true,才会启用配置 
     */  
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata)  
    {  
        return true;  
    }  
}  


接下来就可以使用了

package com.test.spring;  
  
import java.io.Serializable;  
  
import org.springframework.context.annotation.Bean;  
import org.springframework.context.annotation.Conditional;  
import org.springframework.context.annotation.Configuration;  
  
@Configuration  
@Conditional(MyCondition.class)  
public class Config  
{  
    @Bean  
    public Serializable createSerializable()  
    {  
        System.out.println("======000");  
        return "";  
    }  
}  


@Conditional(MyCondition.class)
这句代码可以标注在类上面,表示该类下面的所有@Bean都会启用配置

也可以标注在方法上面,只是对该方法启用配置



除了自己自定义Condition之外,Spring还提供了很多Condition给我们用

@ConditionalOnBean(仅仅在当前上下文中存在某个对象时,才会实例化一个Bean)
@ConditionalOnClass(某个class位于类路径上,才会实例化一个Bean)
@ConditionalOnExpression(当表达式为true的时候,才会实例化一个Bean)
@ConditionalOnMissingBean(仅仅在当前上下文中不存在某个对象时,才会实例化一个Bean)
@ConditionalOnMissingClass(某个class类路径上不存在的时候,才会实例化一个Bean)
@ConditionalOnNotWebApplication(不是web应用)



分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    spring里@Conditional注解使用示例代码

    `@Conditional`注解的另一个常见用法是配合Spring Boot的内置条件注解,如`@ConditionalOnClass`(检查类路径中是否存在某个类)、`@ConditionalOnMissingBean`(如果容器中不存在某个bean,则创建新bean)等。...

    SpringBoot中使用@Conditional示例代码

    在Spring Boot框架中,`@Conditional`注解是条件装配的核心工具,它允许我们基于某些条件来决定是否加载或注册一个Bean。这个功能使得我们能够更精细化地控制应用的配置,仅在满足特定条件时才会激活某个Bean。下面...

    Spring Boot @Conditional注解用法示例介绍

    在Spring Boot框架中,`@Conditional`注解是条件化注解的核心,它允许你在创建Bean时设置特定的条件。当这些条件满足时,Bean才会被Spring容器注册并实例化。这一特性使得开发者可以根据应用程序的具体环境和配置...

    浅谈SpringBoot中的@Conditional注解的使用

    在 Spring Boot 中,@Conditional 注解是自动化配置的核心控制。它可以根据具体的条件决定是否创建 Bean,例如根据配置文件中的某个属性的值来决定是否创建 Bean。 @Conditional 注解的使用 @Conditional 注解需要...

    Spring boot中@Conditional和spring boot的自动配置实例详解

    在 Spring Boot 中,自动配置是通过 @Conditional 注解来实现的。 @Conditional 注解可以根据不同的条件来决定是否启用某个配置。例如,在 Spring Boot 中,JdbcTemplate 是否存在 Classpath 中,如果存在,并且 ...

    spring-example-conditional:带有 Spring Boot 的自定义 Spring 4 @Conditional 注释示例

    自定义@Conditional 注释示例什么是@Conditional 是添加到 Spring 4 的注解,用于指定处理特定配置或将特定 bean 注册到 Spring 上下文的条件。为什么重要Spring Boot 项目自动配置支持依赖于 @Conditional - 它有...

    Spring Boot 常用注解.rar

    **Spring Boot 常用注解详解** Spring Boot以其简洁的配置、快速的启动和集成众多优秀框架的能力,成为Java开发领域中的热门选择。在Spring Boot应用中,注解起着至关重要的作用,它们简化了配置,使得代码更加简洁...

    Spring 4.0新功能:@Conditional注解详细介绍

    总之,`@Conditional`是Spring 4.0引入的重要特性,它提供了在运行时基于条件进行bean注册的能力,极大地简化了条件逻辑的处理,提升了Spring Boot应用的可配置性和可扩展性。通过自定义条件类,我们可以根据各种...

    第三节-springboot源码解析-王炸篇.pdf

    Spring Boot还提供了一个注解@SpringBootApplication,它实际上是一个复合注解,包含@ComponentScan(包扫描)和@EnableAutoConfiguration(开启自动装配)。 自动装配的原理还与Spring的条件化装配有关,即@...

    Spring Boot conditional注解用法详解

    Spring Boot conditional 注解用法详解 Spring Boot conditional 注解是 Spring Boot 框架中的一种重要机制,它允许开发者根据特定的条件来决定是否创建某个 Bean,这种机制可以极大地提高应用程序的灵活性和可维护...

    Spring-Boot-Reference-Guide, Spring Boot Reference Guide中文翻译 -《Spring Boot参考指南》.zip

    3. Conditional注解:如@ConditionalOnClass、@ConditionalOnMissingBean等,根据条件决定是否执行配置。 四、Spring Boot Web开发 1. Web MVC:提供RESTful API开发支持,包括Controller、Model、View等。 2. ...

    详解Spring Boot最核心的27个注解,你了解多少?

    Spring Boot 最核心的 27 个注解详解 在 Spring Boot 框架中,注解扮演着非常重要的角色,它们可以极大地简化项目的配置,最大化地实现了“约定大于配置”的原则。但是,对于初学者来说,各种注解很容易让人“云里...

    spring-boot-2.7.0.zip源码

    6. **条件注解**:Spring Boot使用`@Conditional`系列注解,如`@ConditionalOnClass`、`@ConditionalOnMissingBean`等,使得配置的启用基于特定条件,增加了代码的灵活性。 7. **属性绑定**:`@Value`和`@...

    程序员面试宝典 Spring Boot常见面试题 原理介绍

    答:Spring Boot通过@Conditional注解,结合@ComponentScan扫描到的@ConfigurationProperties,根据条件加载特定的配置类。例如,如果检测到类路径下有hibernate.properties,就会启用Hibernate的相关配置。 2. ...

    Spring Boot核心技术-笔记-pdf版.pdf

    基于条件注解(@Conditional),Spring Boot会根据类路径中的jar包和配置文件自动配置相应的bean。例如,如果类路径下存在HSQLDB数据库,那么Spring Boot就会自动配置一个内存数据库。 3. **嵌入式Web服务器...

    Spring Boot技术知识点:Bean装配1

    7. **条件注解(Conditional Annotation)**:Spring Boot提供了如@ConditionalOnClass、@ConditionalOnBean、@ConditionalOnMissingBean等注解,使得Bean的创建基于某些条件。例如,@ConditionalOnClass只有在类...

    26. 改变自动扫描的包【从零开始学Spring Boot】

    默认情况下,Spring Boot会扫描启动类所在的包及其子包下的所有组件(如@Controller、@Service、@Repository、@Component等注解的类),但是有时候我们可能需要自定义扫描范围,这就是这个标题所要讲述的内容。...

    果子学院Spring boot源码解析

    6. **条件注解(Conditional Annotation)**:Spring Boot使用`@Conditional`系列注解来决定哪些配置类或Bean应该在特定条件下生效。例如,`@ConditionalOnClass`和`@ConditionalOnProperty`。 7. **YAML与...

    spring boot 深入浅出源码

    通过条件注解(@Conditional),Spring Boot能智能地根据类路径、环境变量和属性来决定是否激活某个配置。 此外,Spring Boot的starter项目结构值得探究。每个Starter都有一个主POM,引入了必要的依赖,为开发者...

    spring boot面试题及答案.docx

    3. 自动配置类中的`@Bean`方法会根据条件注解(如`@Conditional`)决定是否创建并注册Bean到Spring容器中。 #### 6. 如何使用Spring Boot实现异常处理? Spring Boot中异常处理通常采用`ControllerAdvice`机制来...

Global site tag (gtag.js) - Google Analytics