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
浙公网安备 33010602011771号