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
相關文章
- spring-boot快速入門學習筆記-整合JPA mybatis rabbitmq mongodb redisSpringboot筆記MyBatisMQMongoDBRedis
- 學習筆記之測試筆記
- JS學習筆記之this指向JS筆記
- flask學習筆記之blueprintFlask筆記
- Swoft 學習筆記之配置筆記
- 學習筆記:DOM之appendChild筆記APP
- node學習筆記之39筆記
- Web之http學習筆記WebHTTP筆記
- Netty學習筆記之ChannelHandlerNetty筆記
- Pytorch學習筆記之tensorboardPyTorch筆記ORB
- Boltdb學習筆記之〇--概述筆記
- Vue(1)之—— Vuex學習筆記Vue筆記
- 《筆記》之學習高併發筆記
- Laravel 學習筆記之 request validationLaravel筆記
- ReactNative學習筆記九之TabNavigatorReact筆記
- Python學習筆記|Python之程式Python筆記
- Golang學習筆記之方法(method)Golang筆記
- ReactNative學習筆記十一之FlatListReact筆記
- swoft 學習筆記之 response 篇筆記
- hive學習筆記之八:SqoopHive筆記OOP
- InstalMaterial學習筆記之Reveal效果筆記
- JVM學習筆記之棧區JVM筆記
- hive學習筆記之十一:UDTFHive筆記
- robot framework學習筆記之九-雜記Framework筆記
- numpy的學習筆記\pandas學習筆記筆記
- MySQL優化學習筆記之explainMySql優化筆記AI
- MySQL優化學習筆記之索引MySql優化筆記索引
- TypeScript學習筆記之五類(Class)TypeScript筆記
- 大資料之 Hadoop學習筆記大資料Hadoop筆記
- Python學習筆記之12306搶票Python筆記
- Swoft 學習筆記之控制器筆記
- Swoft 學習筆記之 request 請求筆記
- swoft 學習筆記之驗證器筆記
- go 學習筆記之工作空間Go筆記
- MongoDB 學習筆記之常用 shell 命令MongoDB筆記
- Vue學習筆記之Webpack的使用Vue筆記Web
- 【學習筆記】之:Java命名規範筆記Java
- 前端學習筆記之ES6~~~前端筆記
- 嵌入式之Makefile學習筆記筆記