<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                `@Conditional`是 Spring 的原生注解,SpringBoot 將它進行擴展,該注解用于做條件判斷,即如果滿足條件則怎么樣,不滿足條件則怎么樣。 (1)HttpEncodingAutoConfiguration的部分源碼。 ```java @Configuration( proxyBeanMethods = false ) @EnableConfigurationProperties({ServerProperties.class}) // 它用于判斷當前的項目是否為Web項目,定義該注解的底層是Spring的@Conditional @ConditionalOnWebApplication( type = Type.SERVLET ) // 用于判斷CharacterEncodingFilter是否在當前項目中存在,如果存在 // 則將它導入到當前類中,定義該注解的底層是Spring的@Conditional @ConditionalOnClass({CharacterEncodingFilter.class}) // 用于判斷是否存在prefix的配置,如果存在則讓其生效,它的底層也是Spring的@Conditional @ConditionalOnProperty( prefix = "server.servlet.encoding", value = {"enabled"}, matchIfMissing = true ) public class HttpEncodingAutoConfiguration { ... } ``` (2)我們看一下`@ConditionalOnClass`的部分源碼。 ```java @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented // 利用到了OnClassCondition類,我們下面看一下這個類的源碼 @Conditional({OnClassCondition.class}) public @interface ConditionalOnClass { Class<?>[] value() default {}; String[] name() default {}; } ``` (3)看一下`@OnClassCondition`的部分源碼。 ``` @Order(-2147483648) class OnClassCondition extends FilteringSpringBootCondition { OnClassCondition() { } ``` (4)看一下`@FilteringSpringBootCondition`的部分源碼。 ```java abstract class FilteringSpringBootCondition extends SpringBootCondition implements AutoConfigurationImportFilter, BeanFactoryAware, BeanClassLoaderAware { private BeanFactory beanFactory; private ClassLoader beanClassLoader; FilteringSpringBootCondition() { } // 最終調用該方法來判斷是否符合條件,如果符合則返回true // 讓被@Conditional擴展注解標記的類生效 public boolean[] match(String[] autoConfigurationClasses, AutoConfigurationMetadata autoConfigurationMetadata) {...)) ``` 下面列舉了一些`@Conditional`注解的派生注解。它們的作用是:必須是注解指定的條件成立,才給容器中添加相應的組件,配置里面的內容才生效。 | @Conditional擴展注解 | 作用(判斷是否滿足當前指定條件) | | --- | --- | | @ConditionalOnJava | 系統的java版本是否符合要求 | | @ConditionalOnBean | 容器中存在指定Bean | | @ConditionalOnMissingBean | 容器中不存在指定Bean | | @ConditionalOnExpression | 滿足SpEL表達式指定 | | @ConditionalOnClass | 系統中有指定的類 | | @ConditionalOnMissingClass | 系統中沒有指定的類 | | @ConditionalOnSingleCandidate | 容器中只有一一個指定的Bean ,或者這個Bean是首選Bean | | @ConditionalOnProperty | 系統中指定的屬性是否有指定的值 | | @ConditionalOnResource | 類路徑下是否存在指定資源文件 | | @ConditionalOnWebApplication | 當前是為web環境 | | @ConditionalOnNotWebApplication | 當前不是web環境 | | @ConditionalOnJndi | JNDI存在指定項 |
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看