spring使用@Condition——阅读开源项目中的代码
作用:为Bean添加自定义条件,只有当Bean满足条件的时候,才会被注册。
使用示例:
1、实现Condition接口:org.springframework.context.annotation.Condition;
1 import org.springframework.context.annotation.Condition; 2 import org.springframework.context.annotation.ConditionContext; 3 import org.springframework.core.type.AnnotatedTypeMetadata; 4 5 public class WindowsCondition implements Condition { 6 @Override 7 public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) { 8 return conditionContext.getEnvironment().getProperty("os.name").contains("Windows"); 9 } 10 }
2、在主配置类中,使用@Conditional:表示在注册Bean时,加入判断条件
1 import org.springframework.context.annotation.Bean; 2 import org.springframework.context.annotation.Conditional; 3 import org.springframework.context.annotation.Configuration; 4 5 6 7 @Configuration 8 public class MyConfig { 9 10 @Bean 11 @Conditional(WindowsCondition.class) 12 public ListService windowsListService(){ 13 return new WindowsListService(); 14 } 15 }
3、使用:spring容器会自动根据条件加载Bean。
1 import org.springframework.context.annotation.AnnotationConfigApplicationContext; 2 3 public class Main { 4 public static void main(String args[]){ 5 AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MyConfig.class); 6 ListService listService = context.getBean(ListService.class); 7 8 System.out.println(listService.shoListCmd()); 9 context.close(); 10 11 } 12 }
原理:
参考博客:https://blog.csdn.net/wadeltf/article/details/87784660

浙公网安备 33010602011771号