Spring---条件注解@Conditional
Posted anpeiyong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring---条件注解@Conditional相关的知识,希望对你有一定的参考价值。
1、概述
1.1、Spring4 提供了一个更通用的 基于条件的Bean的创建,即使用@Conditional注解;
1.2、案例
package com.an.config; import com.an.conditon.WindowsCondition; import com.an.conditon.WindowsListService; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; /** * @description: * @author: anpeiyong * @date: Created in 2019/11/20 20:27 * @since: */ @Configuration public class ConditionConfig { @Bean @Conditional(value = WindowsCondition.class) WindowsListService listService(){ return new WindowsListService(); } }
package com.an.conditon; import org.springframework.context.annotation.Condition; import org.springframework.context.annotation.ConditionContext; import org.springframework.core.type.AnnotatedTypeMetadata; /** * @description: * @author: anpeiyong * @date: Created in 2019/11/20 20:24 * @since: */ public class WindowsCondition implements Condition { @Override public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) { return context.getEnvironment().getProperty("os.name").contains("Windows"); } }
package com.an.conditon; /** * @description: * @author: anpeiyong * @date: Created in 2019/11/20 20:26 * @since: */ public class WindowsListService { public String listCmd(){ return "dir"; } }
package com.an.main; import com.an.conditon.WindowsListService; import com.an.config.ConditionConfig; import org.springframework.context.annotation.AnnotationConfigApplicationContext; /** * @description: * @author: anpeiyong * @date: Created in 2019/11/20 20:29 * @since: */ public class ConditionMainTest { public static void main(String[] args) { AnnotationConfigApplicationContext annotationConfigApplicationContext=new AnnotationConfigApplicationContext(ConditionConfig.class); WindowsListService windowsListService=annotationConfigApplicationContext.getBean(WindowsListService.class); System.out.println(annotationConfigApplicationContext.getEnvironment().getProperty("os.name")+"该系统下的命令:"+windowsListService.listCmd()); } } 结果: Windows 10该系统下的命令:dir
以上是关于Spring---条件注解@Conditional的主要内容,如果未能解决你的问题,请参考以下文章