http://blog.csdn.net/mn960mn/article/details/51190590
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應用)