91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring中如何使用條件注解

發布時間:2021-06-23 15:22:13 來源:億速云 閱讀:255 作者:Leah 欄目:編程語言

本篇文章為大家展示了Spring中如何使用條件注解,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

一 點睛

Spring 4 提供了一個更通用的基于條件的Bean的創建,即使用@Conditional注解。

@Conditional根據滿足僅一個特定條件創建一個特定的Bean。也就是根據特定的條件來控制Bean的創建行為,這樣就可以利用這個特性進行一些自動的配置。

二 項目說明

以不同的操作系統為條件,通過實現@Condition接口,并重寫matches方法來構造條件。若在windows系統下運行,則輸出列表命令為dir;若在Linux操作系統下運行程序,則輸出列表命令為ls。

三 實戰

1 判斷條件定義

1.1 windows的判定條件

package com.wisely.highlight_spring4.ch4.conditional;import org.springframework.context.annotation.Condition;import org.springframework.context.annotation.ConditionContext;import org.springframework.core.type.AnnotatedTypeMetadata;public class WindowsCondition implements Condition { public boolean matches(ConditionContext context,   AnnotatedTypeMetadata metadata) {  return context.getEnvironment().getProperty("os.name").contains("Windows"); }}

1.2 Linux的判定條件

package com.wisely.highlight_spring4.ch4.conditional;import org.springframework.context.annotation.Condition;import org.springframework.context.annotation.ConditionContext;import org.springframework.core.type.AnnotatedTypeMetadata;public class LinuxCondition implements Condition { public boolean matches(ConditionContext context,   AnnotatedTypeMetadata metadata) {  return context.getEnvironment().getProperty("os.name").contains("Linux"); }}

2 不同系統下的Bean類

2.1 接口

package com.wisely.highlight_spring4.ch4.conditional;public interface ListService {  public String showListCmd();}

2.2 Window下創建的Bean類

package com.wisely.highlight_spring4.ch4.conditional;public class WindowsListService implements ListService {  @Override  public String showListCmd() {   return "dir";  }}

2.3 Linux下所創建的Bean類

package com.wisely.highlight_spring4.ch4.conditional;public class LinuxListService implements ListService{  @Override  public String showListCmd() {   return "ls";  }}

3 配置類

package com.wisely.highlight_spring4.ch4.conditional;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Conditional;import org.springframework.context.annotation.Configuration;@Configurationpublic class ConditionConifg { @Bean @Conditional(WindowsCondition.class) //符合window條件,則實例化WindowsListService public ListService windowsListService() {  return new WindowsListService(); } @Bean @Conditional(LinuxCondition.class) //符合Linux條件,則實例化LinuxListService public ListService linuxListService() {  return new LinuxListService(); }}

4 主類

package com.wisely.highlight_spring4.ch4.conditional;import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class Main {  public static void main(String[] args) {   AnnotationConfigApplicationContext context =    new AnnotationConfigApplicationContext(ConditionConifg.class);   ListService listService = context.getBean(ListService.class);   System.out.println(context.getEnvironment().getProperty("os.name")     + "系統下的列表命令為: "     + listService.showListCmd());   context.close();  }}

四 運行

windows下運行結果如下:

Windows 10系統下的列表命令為: dir

五 擴展

如果把LinuxCondition條件改成和WindowsCondition一樣的條件會怎樣呢?即有兩個條件都匹配會怎樣呢?

修改后的代碼如下:

public class LinuxCondition implements Condition { public boolean matches(ConditionContext context,   AnnotatedTypeMetadata metadata) {  return context.getEnvironment().getProperty("os.name").contains("Windows"); }}

修改后再運行,報錯了:

Exception in thread "main" org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [com.wisely.highlight_spring4.ch4.conditional.ListService] is defined: expected single matching bean but found 2: linuxListService,windowsListService at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:365) at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:331) at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:968) at com.wisely.highlight_spring4.ch4.conditional.Main.main(Main.java:11)

報錯信息很明顯:

[com.wisely.highlight_spring4.ch4.conditional.ListService] is defined: expected single matching bean but found 2: linuxListService,windowsListService

上述內容就是Spring中如何使用條件注解,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新野县| 光山县| 若尔盖县| 乌兰浩特市| 高安市| 兴义市| 商水县| 海盐县| 庆阳市| 昌乐县| 五河县| 湟源县| 抚远县| 大方县| 普洱| 南昌县| 彭山县| 常熟市| 汕头市| 阿图什市| 梅河口市| 安义县| 永康市| 山阴县| 克什克腾旗| 鹿邑县| 和平区| 郯城县| 安庆市| 通化市| 本溪| 乐至县| 锡林浩特市| 肥东县| 萨嘎县| 临清市| 无极县| 长乐市| 韩城市| 循化| 黑龙江省|