博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring @Conditional注解的使用
阅读量:5237 次
发布时间:2019-06-14

本文共 1383 字,大约阅读时间需要 4 分钟。

 

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

下面来介绍如何使用Condition

 

首先写一个类

 

[java]   
  1. package com.test.spring;  
  2.   
  3. import org.springframework.context.annotation.Condition;  
  4. import org.springframework.context.annotation.ConditionContext;  
  5. import org.springframework.core.type.AnnotatedTypeMetadata;  
  6.   
  7. public class MyCondition implements Condition  
  8. {  
  9.     /** 
  10.      * 这里写自己的逻辑,只有返回true,才会启用配置 
  11.      */  
  12.     public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata)  
  13.     {  
  14.         return true;  
  15.     }  
  16. }  

接下来就可以使用了

 

 

[java]   
  1. package com.test.spring;  
  2.   
  3. import java.io.Serializable;  
  4.   
  5. import org.springframework.context.annotation.Bean;  
  6. import org.springframework.context.annotation.Conditional;  
  7. import org.springframework.context.annotation.Configuration;  
  8.   
  9. @Configuration  
  10. @Conditional(MyCondition.class)  
  11. public class Config  
  12. {  
  13.     @Bean  
  14.     public Serializable createSerializable()  
  15.     {  
  16.         System.out.println("======000");  
  17.         return "";  
  18.     }  
  19. }  

@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/xingzc/p/7490870.html

你可能感兴趣的文章
设计模式之桥接模式(Bridge)
查看>>
jquery的$(document).ready()和onload的加载顺序
查看>>
Python Web框架Django (五)
查看>>
.net学习之继承、里氏替换原则LSP、虚方法、多态、抽象类、Equals方法、接口、装箱拆箱、字符串------(转)...
查看>>
【codevs1033】 蚯蚓的游戏问题
查看>>
【程序执行原理】
查看>>
python的多行注释
查看>>
连接Oracle需要jar包和javadoc文档的下载
查看>>
UVA 10976 - Fractions Again?!
查看>>
Dreamweaver cc新版本css单行显示
查看>>
【android】安卓的权限提示及版本相关
查看>>
JavaScript可否多线程? 深入理解JavaScript定时机制
查看>>
IOS基础学习
查看>>
PHP 导出 Excell
查看>>
Java基础教程——网络基础知识
查看>>
Kruskal基础最小生成树
查看>>
ubuntu 14.04 安装搜狗拼音输入法
查看>>
浅谈算法和数据结构: 一 栈和队列
查看>>
Java内部类详解
查看>>
【hdu 1429】胜利大逃亡(续)
查看>>