当前位置 主页 > 服务器问题 > Linux/apache问题 > 最大化 缩小

    Spring条件注解用法案例分析(2)

    栏目:Linux/apache问题 时间:2019-11-13 22:12

    四 运行

    windows下运行结果如下:

    Windows 10系统下的列表命令为: dir

    五 扩展

    如果把LinuxCondition条件改成和WindowsCondition一样的条件会怎样呢?即有两个条件都匹配会怎样呢?

    修改后的代码如下:

    public class LinuxCondition implements Condition {
     public boolean matches(ConditionContext context,
       AnnotatedTypeMetadata metadata) {
      return context.getEnvironment().getProperty("os.name").contains("Windows");
     }
    }
    
    

    修改后再运行,报错了:

    Exception in thread "main" org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [com.wisely.highlight_spring4.ch3.conditional.ListService] is defined: expected single matching bean but found 2: linuxListService,windowsListService
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:365)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:331)
        at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:968)
        at com.wisely.highlight_spring4.ch3.conditional.Main.main(Main.java:11)

    报错信息很明显:

    [com.wisely.highlight_spring4.ch3.conditional.ListService] is defined: expected single matching bean but found 2: linuxListService,windowsListService

    匹配到了两条,所以针对条件判断,设计程序时,只能匹配上一条,否则会抛异常。

    更多关于java相关内容感兴趣的读者可查看本站专题:《Spring框架入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

    希望本文所述对大家java程序设计有所帮助。