spring-boot學習筆記之Conditional
今天看了@Conditional,自己根據以下文章練了下,根據自己的理解操作的
轉載出處:http://wiselyman.iteye.com/blog/2213054
17.1 @Conditional
@Conditional為按照條件配置spring的bean提供了支援,即滿足某種條件下,怎麼配置對應的bean;
應用場景
當某一個jar包在classpath中的時候,配置某幾個bean;
當某一個bean配置好後,會自動配置一個特定的bean;
當某種環境變數被設定後,建立某個bean;
@Conditional為敏捷開發所提倡的原則”習慣優於配置”提供了支援;
@Conditional是Spring Boot快速開發框架實現”習慣優於配置”的核心技術;
演示在windows和linux系統下,初始化不同的bean,windows和linux作為判斷條件;
條件的構造需要類實現Condition介面,並實現matches方法
WindowsCondition
packagecom.wisely.conditional;importorg.springframework.context.annotation.Condition;importorg.springframework.context.annotation.ConditionContext;importorg.springframework.core.type.AnnotatedTypeMetadata;publicclassWindowsConditionimplementsCondition{publicbooleanmatches(ConditionContextcontext,AnnotatedTypeMetadatametadata) {returncontext.getEnvironment().getProperty(“os.name”).contains(“Windows”); }}
LinuxCondition
packagecom.wisely.conditional;importorg.springframework.context.annotation.Condition;importorg.springframework.context.annotation.ConditionContext;importorg.springframework.core.type.AnnotatedTypeMetadata;publicclassLinuxConditionimplementsCondition{publicbooleanmatches(ConditionContextcontext,AnnotatedTypeMetadatametadata) {returncontext.getEnvironment().getProperty(“os.name”).contains(“Linux”); }}
介面
packagecom.wisely.conditional;publicinterfaceCommandService{publicStringshowListCommand();}
WindowsCommnadService
packagecom.wisely.conditional;publicclassWindowsCommnadServiceimplementsCommandService{publicStringshowListCommand() {return”dir”; }}
LinuxCommandService
packagecom.wisely.conditional;publicclassLinuxCommandServiceimplementsCommandService{publicStringshowListCommand() {return”ls”; }}
packagecom.wisely.conditional;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Conditional;importorg.springframework.context.annotation.Configuration;@ConfigurationpublicclassDemoConfig{@Bean@Conditional(WindowsCondition.class)publicCommandServicecommandService() {returnnewWindowsCommnadService(); }@Bean@Conditional(LinuxCondition.class)publicCommandServicelinuxEmailerService() {returnnewLinuxCommandService(); }}
windows下
packagecom.wisely.conditional;importorg.springframework.context.annotation.AnnotationConfigApplicationContext;publicclassMain{publicstaticvoidmain(String[]args) {AnnotationConfigApplicationContextcontext=newAnnotationConfigApplicationContext(“com.wisely.conditional”);CommandServicecs=context.getBean(CommandService.class);System.out.println(cs.showListCommand()); context.close(); }}
輸出結果
dir
Linux下(本例沒有切換到linux,直接修改os.name為Linux)
packagecom.wisely.conditional;importorg.springframework.context.annotation.AnnotationConfigApplicationContext;publicclassMain{publicstaticvoidmain(String[]args) {System.setProperty(“os.name”,”Linux”);AnnotationConfigApplicationContextcontext=newAnnotationConfigApplicationContext(“com.wisely.conditional”);CommandServicecs=context.getBean(CommandService.class);System.out.println(cs.showListCommand()); context.close(); }}
輸出結果
ls
相關文章
- node學習筆記之39筆記
- 學習筆記之測試筆記
- Swoft 學習筆記之配置筆記
- Boltdb學習筆記之〇--概述筆記
- flask學習筆記之blueprintFlask筆記
- JS學習筆記之this指向JS筆記
- Java學習筆記之staticJava筆記
- oracle之awr學習筆記Oracle筆記
- Web之http學習筆記WebHTTP筆記
- spring-boot快速入門學習筆記-整合JPA mybatis rabbitmq mongodb redisSpringboot筆記MyBatisMQMongoDBRedis
- 《筆記》之學習高併發筆記
- Vue(1)之—— Vuex學習筆記Vue筆記
- swoft 學習筆記之 response 篇筆記
- JVM學習筆記之棧區JVM筆記
- hive學習筆記之十一:UDTFHive筆記
- Golang學習筆記之方法(method)Golang筆記
- 學習筆記:DOM之appendChild筆記APP
- Java學習筆記之I/OJava筆記
- C++ 學習筆記之 引用C++筆記
- Android學習筆記之IntentAndroid筆記Intent
- Netty學習筆記之ChannelHandlerNetty筆記
- Java學習筆記之檔案Java筆記
- 安卓學習筆記之Activity(一)安卓筆記
- Java學習筆記之陣列Java筆記陣列
- Java學習筆記之繼承Java筆記繼承
- MD5之學習筆記筆記
- swift 學習筆記之陣列Swift筆記陣列
- CUDA 學習筆記之程式棧筆記
- Python學習筆記之序列Python筆記
- robot framework學習筆記之九-雜記Framework筆記
- numpy的學習筆記\pandas學習筆記筆記
- Vue學習筆記之Webpack的使用Vue筆記Web
- MongoDB 學習筆記之常用 shell 命令MongoDB筆記
- ReactNative學習筆記十一之FlatListReact筆記
- Swoft 學習筆記之 request 請求筆記
- swoft 學習筆記之驗證器筆記
- Swoft 學習筆記之控制器筆記
- go 學習筆記之工作空間Go筆記