當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
【Spring注解系列04】@Condition条件注解
生活随笔
收集整理的這篇文章主要介紹了
【Spring注解系列04】@Condition条件注解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.@Condition條件注解
滿足指定條件,則會加載對應的實例或者類。該注解可以作用于類和方法上。
@Condition類屬性值中,對應的類,必須是實現Condition接口的類
2.實例
配置類:
@Configuration public class ConditionalConfig {/*** @Conditional({Condition}) : 按照一定的條件進行判斷,滿足條件給容器中注冊bean** 如果系統是windows,給容器中注冊("bill")* 如果是linux系統,給容器中注冊("linus")*/@Conditional(WindowsCondition.class)@Bean("bill")public Person bill(){return new Person("111","Bill Gates");}@Conditional(LinuxCondition.class)@Bean("linus")public Person linus(){return new Person("222","linus");}}可以通過設置虛擬機dos名稱來改變系統名稱。
條件類:必須實現Condition接口
public class LinuxCondition implements Condition {@Overridepublic boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {// TODO是否linux系統//1、能獲取到ioc使用的beanfactoryConfigurableListableBeanFactory beanFactory = context.getBeanFactory();//2、獲取類加載器ClassLoader classLoader = context.getClassLoader();//3、獲取當前環境信息Environment environment = context.getEnvironment();//4、獲取到bean定義的注冊類BeanDefinitionRegistry registry = context.getRegistry();System.out.println("environment.getProperty(os.name)---->"+environment.getProperty("os.name"));if (environment.getProperty("os.name").contains("Linux")){return true;}return false;} }public class WindowsCondition implements Condition {@Overridepublic boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {Environment environment = context.getEnvironment();System.out.println("environment.getProperty(os.name)---->" + environment.getProperty("os.name"));if (environment.getProperty("os.name").contains("Windows")) {return true;}return false;} }測試類:
public class ConditionalTest {public static void main(String[] args) {ApplicationContext applicationContext = new AnnotationConfigApplicationContext(ConditionalConfig.class); // Person linus = (Person) applicationContext.getBean("linus");Person bill = (Person) applicationContext.getBean("bill"); // System.out.println("linus----->"+linus);System.out.println("bill----->"+bill);} }測試結果:
environment.getProperty(os.name)---->Windows 7 environment.getProperty(os.name)---->Windows 7 bill----->Person{id='111', name='Bill Gates'}總結
以上是生活随笔為你收集整理的【Spring注解系列04】@Condition条件注解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Spring注解系列03】@Scope
- 下一篇: 【深入Java虚拟机JVM 04】JVM