前言:

在看@ConditionalOnBean注解的实现的时候,看到了SearchStrategy(直译过来是搜索策略)这个枚举类型,比较好奇。

SearchStrategy:

package org.springframework.boot.autoconfigure.condition;

public enum SearchStrategy {
    CURRENT,
    /** @deprecated */
    @Deprecated
    PARENTS,
    ANCESTORS,
    ALL;

    private SearchStrategy() {
    }
}

在官方文档中,它被解释为 bean工厂层次结构中bean的一些命名搜索策略

枚举常量:

它的枚举常量有:

  • ALL:搜索整个层次结构,@ConditionOnBean中默认是ALL。

  • ANCESTORS:搜索所有祖先,但不搜索当前上下文。

  • CURRENT:仅搜索当前上下文。

  • PARENTS:已过时,搜索所有父母和祖先,但不是当前的上下文(在SpringBoot 2.0中,这个常量将被移除)。 

方法:

values()

public static  SearchStrategy [] values()

按照声明的顺序返回一个包含此枚举类型常量的数组。此方法可用于迭代常量,如下所示:

for(SearchStrategy c:SearchStrategy.values())
    System.out.println(C);

返回:包含此枚举类型常量的数组,按声明的顺序排列

valueOf(String name)

public static  SearchStrategy  valueOf(String  name)

返回具有指定名称的此类型的枚举常量。该字符串必须与用于声明此类型中的枚举常量的标识符完全匹配。(不允许使用无关的空白字符。)
参数:name - 要返回的枚举常量的名称。
返回:具有指定名称的枚举常量
抛出:
IllegalArgumentException - 如果此枚举类型没有指定名称的常量
NullPointerException - 如果参数为null

更多推荐

SpringBoot中的SearchStrategy介绍