Spring @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应用)

原文地址:https://www.cnblogs.com/shamo89/p/8970346.html

时间: 2024-11-09 03:03:54

Spring @Conditional注解的使用的相关文章

一文了解@Conditional注解说明和使用

目录 @Contidional 介绍 Condition 接口 Spring @Conditional注解实例 @Conditional 与@Profile 的对比 ? @Conditional:Spring4.0 介绍了一个新的注解@Conditional,它的逻辑语义可以作为"If-then-else-"来对bean的注册起作用. @Contidional 介绍 ? Conditional 是由 SpringFramework 提供的一个注解,位于 org.springframew

SpringBoot(15)—@Conditional注解

SpringBoot(15)-@Conditional注解 作用 @Conditional是Spring4新提供的注解,它的作用是按照一定的条件进行判断,满足条件的才给容器注册Bean. 一.概述 1.@Conditional注解定义 @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Conditional { Clas

spring in action学习笔记七:@Conditional注解的用法

@Profile注解是@Conditional注解的一个例子.即@Profile也是用@Conditional注解来实现的. 必须让条件实现Condition这个接口. 下面的案例讲如果环境中有magic这个属性,则能通过条件,spring会创建bean.反之如果环境中没有magic这个属性,则不能通过条件,spring就不会创建bean,会报错. 案例的代码如下: MagicBean的代码如下: 1 package com.advancedWiring.conditionalBeans; 2

Spring中的@conditional注解

今天主要从以下几方面来介绍一下@Conditional注解 @Conditional注解是什么 @Conditional注解怎么使用 1,@Conditional注解是什么 @Conditional注解是可以根据一些自定义的条件动态的选择是否加载该bean到springIOC容器中去,如果看过springBoot源码的同学会发现,springBoot中大量使用了该注解 2,@Conditional注解怎么使用 查看@Conditional源码你会发现它既可以作用在方法上,同时也可以作用在类上,源

Spring条件注解@Conditional

@Conditional 基于条件的Bean的创建,根据满足某一个特定条件创建特定的Bean,通过实现Condition接口,并重写matches接口来构造判断条件. 下面的实例通过将以不同操作系统作为条件,我们将通过实现Condition接口,并重写其matchess方法来构造判断条件.若在Windows系统下运行程序,则输出列表命令为dir:若在Linux操作系统下运行程序,则输出列表命令为ls1.判断条件定义(1)判断Windows的条件 package com.lwh.highlight

020 使用@Conditional注解完成条件注入

一 .概述 在spring之中提供@Conditional注解完成条件注入. 我们可以实现特定的接口,完成配置类可以根据条件进行Bean的创建. 二 .测试 public abstract class OS { protected String name; public String getName() { return this.name; } } class Windows extends OS { public Windows() { super.name = "windows"

Spring走向注解驱动编程

SpringFramework的两大核心,IOC(Inversion of control)控制反转和DI(Dependency Inject)依赖注入,其推崇的理念是应用系统不应以java代码的方式直接控制依赖关系,而是通过容器来管理. Spring Framework 1.x 注解驱动启蒙时代 从Spring Framework 1.2.0版本开始,开始支持Annotation,虽然框架层面均已支持@managedResource和@Transactional等,但是其主要的还是以XML配置

Spring框架系列(七)--Spring常用注解

Spring部分: 1.声明bean的注解: @Component:组件,没有明确的角色 @Service:在业务逻辑层使用(service层) @Repository:在数据访问层使用(dao层) @Controller:在展现层使用,控制器的声明(Controller) 2.注入bean的注解: @Autowired:由Spring提供,按类型注入,如果一个接口有多个实现,需要和@Qualifier配合使用 @Inject:由JSR-330提供 @Resource:由JSR-250提供,按名

Spring基础注解

Spring注解的解释:注解本身没有功能的,就和xml一样.注解和xml都是一种元数据,元数据即解释数据的数据,这就是所谓配置. 1.声明bean的注解 Spring注解 描述 @Component 组件,没有明确的角色 @Service 在业务逻辑层使用(service层) @Repository 在展现层使用,控制器的声明(C) @Controller 定义文档的主体 2.注入bean的注解 Spring注解 描述 @Autowired Spring提供的工具(由Spring的依赖注入工具(