日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

java 按条件注解_Spring 条件注解 @Conditional

發布時間:2025/3/20 javascript 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 按条件注解_Spring 条件注解 @Conditional 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

下面的示例將以不同的操作系統作為條件,我們將通過實現Condition接口,并重寫其matches方法來構造判斷條件。如在Windows系統下運行程序輸出dir,Linux下輸出ls。

一、不同系統下的Bean

1、聲明接口

package cn.wuweixiang.springbootdemo.service;

/**

* ListService

*

* @author weixiang.wu

* @date 2018 -08-22 15:39

*/

public interface ListService {

/**

* Show list cmd string.

*

* @return the string

*/

String showListCmd();

}

2、Windows下所要創建的Bean

package cn.wuweixiang.springbootdemo.service.impl;

import cn.wuweixiang.springbootdemo.service.ListService;

/**

* WindowsListServiceImpl

*

* @author weixiang.wu

* @date 2018-08-22 15:40

**/

public class WindowsListServiceImpl implements ListService {

@Override

public String showListCmd() {

return "dir";

}

}

3、Linux下所要創建的Bean

package cn.wuweixiang.springbootdemo.service.impl;

import cn.wuweixiang.springbootdemo.service.ListService;

/**

* LinuxListServiceImpl

*

* @author weixiang.wu

* @date 2018-08-22 15:42

**/

public class LinuxListServiceImpl implements ListService {

@Override

public String showListCmd() {

return "ll";

}

}

二、判斷條件定義

package cn.wuweixiang.springbootdemo.condition;

import org.springframework.context.annotation.Condition;

import org.springframework.context.annotation.ConditionContext;

import org.springframework.core.type.AnnotatedTypeMetadata;

import java.util.Objects;

/**

* ConditionalConfig

*

* @author weixiang.wu

* @date 2018-08-22 15:55

**/

public class LinuxCondition implements Condition {

@Override

public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {

return Objects.requireNonNull(context.getEnvironment().getProperty("os.name")).contains("Linux");

}

}

package cn.wuweixiang.springbootdemo.condition;

import org.springframework.context.annotation.Condition;

import org.springframework.context.annotation.ConditionContext;

import org.springframework.core.type.AnnotatedTypeMetadata;

import java.util.Objects;

/**

* ConditionalConfig

*

* @author weixiang.wu

* @date 2018-08-22 15:55

**/

public class WindowsCondition implements Condition {

@Override

public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {

return Objects.requireNonNull(context.getEnvironment().getProperty("os.name")).contains("Windows");

}

}

三、配置類

package cn.wuweixiang.springbootdemo.config;

import cn.wuweixiang.springbootdemo.condition.LinuxCondition;

import cn.wuweixiang.springbootdemo.condition.WindowsCondition;

import cn.wuweixiang.springbootdemo.service.ListService;

import cn.wuweixiang.springbootdemo.service.impl.LinuxListServiceImpl;

import cn.wuweixiang.springbootdemo.service.impl.WindowsListServiceImpl;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Conditional;

/**

* ConditionalConfig

*

* @author weixiang.wu

* @date 2018 -08-22 15:55

*/

public class ConditionalConfig {

/**

* 使用@Conditional注解,符合Linux條件就實例化LinuxListService

*

* @return the list service

*/

@Bean

@Conditional(LinuxCondition.class)

public ListService linuxListService() {

return new LinuxListServiceImpl();

}

/**

* 使用@Conditional注解,符合Windows條件就實例化WindowsListService

*

* @return the list service

*/

@Bean

@Conditional(WindowsCondition.class)

public ListService windowsListService() {

return new WindowsListServiceImpl();

}

}

四、測試類

package cn.wuweixiang.springbootdemo;

import cn.wuweixiang.springbootdemo.config.ConditionalConfig;

import cn.wuweixiang.springbootdemo.service.ListService;

import org.junit.After;

import org.junit.Test;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

/**

* SpringConditionalTest

*

* @author weixiang.wu

* @date 2018-08-22 16:00

**/

public class SpringConditionalTest {

AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ConditionalConfig.class);

@Test

public void contextTest() {

ListService listService = context.getBean(ListService.class);

System.out.println(context.getEnvironment().getProperty("os.name")

+ "系統下的列表命令為:"

+ listService.showListCmd());

}

@After

public void closeContext() {

context.close();

}

}

轉載至鏈接:https://my.oschina.net/wuweixiang/blog/1932216

總結

以上是生活随笔為你收集整理的java 按条件注解_Spring 条件注解 @Conditional的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。