当前位置: 首页 > wzjs >正文

网站页面设计与制作实践网页版微信二维码怎么扫

网站页面设计与制作实践,网页版微信二维码怎么扫,wordpress 添加目录,多语种网站营销Spring 及 Spring Boot 条件化注解完整列表及示例 1. 所有条件化注解列表 Spring 和 Spring Boot 提供了以下条件化注解(共 15 个),用于在配置类或方法上实现条件化注册 Bean 或配置: 注解名称作用来源框架Conditional自定义条件…

Spring 及 Spring Boot 条件化注解完整列表及示例


1. 所有条件化注解列表

Spring 和 Spring Boot 提供了以下条件化注解(共 15 个),用于在配置类或方法上实现条件化注册 Bean 或配置:

注解名称作用来源框架
@Conditional自定义条件逻辑。Spring Core
@ConditionalOnClass类路径存在指定类时触发。Spring Core
@ConditionalOnMissingClass类路径不存在指定类时触发。Spring Core
@ConditionalOnBean指定 Bean 存在时触发。Spring Core
@ConditionalOnMissingBean指定 Bean 不存在时触发。Spring Core
@ConditionalOnExpressionSpEL 表达式为 true 时触发。Spring Core
@ConditionalOnJava当前 Java 版本满足条件时触发。Spring Core
@ConditionalOnProperty配置属性存在且符合指定值时触发。Spring Core
@ConditionalOnResource类路径存在指定资源文件时触发。Spring Boot
@ConditionalOnWebApplication当应用是 Web 应用时触发。Spring Boot
@ConditionalOnNotWebApplication当应用不是 Web 应用时触发。Spring Boot
@ConditionalOnSingleCandidate指定类型只有一个候选 Bean 或类型匹配时触发。Spring Boot
@ConditionalOnJndiJNDI 资源存在时触发。Spring Boot
@ConditionalOnMissingJndiJNDI 资源不存在时触发。Spring Boot
@ConditionalOnCloudPlatform当运行在指定云平台(如 AWS、Azure)时触发。Spring Cloud

2. 完整代码示例
(1) @Conditional(自定义条件)

作用:通过实现 Condition 接口自定义条件逻辑。

// 自定义条件类
public class CustomCondition implements Condition {@Overridepublic boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {return context.getEnvironment().containsProperty("custom.key");}
}// 配置类
@Configuration
@Conditional(CustomCondition.class) // 自定义条件
public class CustomConditionConfig {@Beanpublic String customConditionBean() {return "Bean created by custom condition";}
}// 测试类
@SpringBootTest(properties = "custom.key=true")
class CustomConditionTest {@Autowired(required = false)private String customConditionBean;@Testvoid testWithCustomKey() {assertNotNull(customConditionBean);}
}

(2) @ConditionalOnClass

作用:类路径存在指定类时触发。

@Configuration
@ConditionalOnClass(DataSource.class) // 当存在 DataSource 类时触发
public class ClassConditionConfig {@Beanpublic String dataSourceBean() {return "DataSource exists";}
}

(3) @ConditionalOnMissingClass

作用:类路径不存在指定类时触发。

@Configuration
@ConditionalOnMissingClass("org.springframework.jdbc.datasource.DataSource") // 当无 DataSource 类时触发
public class MissingClassConditionConfig {@Beanpublic String noDataSourceBean() {return "DataSource does NOT exist";}
}

(4) @ConditionalOnBean

作用:指定 Bean 存在时触发。

@Configuration
@ConditionalOnBean(name = "dataSource") // 当存在 dataSource Bean 时触发
public class BeanConditionConfig {@Beanpublic String dataSourceDependentBean() {return "Bean created because dataSource exists";}
}

(5) @ConditionalOnMissingBean

作用:指定 Bean 不存在时触发。

@Configuration
public class MissingBeanConditionConfig {@Bean@ConditionalOnMissingBean(name = "myBean") // 当无 myBean 时触发public String missingBean() {return "Bean created because 'myBean' is missing";}
}

(6) @ConditionalOnExpression

作用:SpEL 表达式为 true 时触发。

@Configuration
@ConditionalOnExpression("${app.env} == 'prod'") // 当 env 为 prod 时触发
public class ExpressionConditionConfig {@Beanpublic String prodBean() {return "Bean for prod environment";}
}

(7) @ConditionalOnJava

作用:Java 版本满足条件时触发。

@Configuration
@ConditionalOnJava(baseline = JavaVersion.EIGHT, fallback = JavaVersion.TEN) // Java 8-10 时触发
public class JavaVersionConditionConfig {@Beanpublic String java8To10Bean() {return "Java 8-10 compatible";}
}

(8) @ConditionalOnProperty

作用:配置属性存在且符合指定值时触发。

@Configuration
@ConditionalOnProperty(name = "feature.enabled", havingValue = "true") // 当 feature.enabled 为 true 时触发
public class PropertyConditionConfig {@Beanpublic String enabledFeatureBean() {return "Feature enabled";}
}

(9) @ConditionalOnResource

作用:类路径存在指定资源文件时触发(Spring Boot)。

@Configuration
@ConditionalOnResource(resources = "classpath:config/application-prod.properties") // 当资源存在时触发
public class ResourceConditionConfig {@Beanpublic String prodResourceBean() {return "Resource exists";}
}

(10) @ConditionalOnWebApplication

作用:应用是 Web 应用时触发(Spring Boot)。

@Configuration
@ConditionalOnWebApplication // Web 应用时触发
public class WebConditionConfig {@Beanpublic String webBean() {return "Web application";}
}

(11) @ConditionalOnNotWebApplication

作用:应用不是 Web 应用时触发(Spring Boot)。

@Configuration
@ConditionalOnNotWebApplication // 非 Web 应用时触发
public class NonWebConditionConfig {@Beanpublic String nonWebBean() {return "Non-web application";}
}

(12) @ConditionalOnSingleCandidate

作用:指定类型只有一个候选 Bean 时触发(Spring Boot)。

@Configuration
@ConditionalOnSingleCandidate(DataSource.class) // 当唯一 DataSource 存在时触发
public class SingleCandidateConditionConfig {@Beanpublic String singleDataSourceBean() {return "Single DataSource candidate";}
}

(13) @ConditionalOnJndi

作用:JNDI 资源存在时触发(Spring Boot)。

@Configuration
@ConditionalOnJndi("java:comp/env/jdbc/MyDB") // 当 JNDI 资源存在时触发
public class JndiConditionConfig {@Beanpublic String jndiBean() {return "JNDI resource exists";}
}

(14) @ConditionalOnMissingJndi

作用:JNDI 资源不存在时触发(Spring Boot)。

@Configuration
@ConditionalOnMissingJndi("java:comp/env/jdbc/MyDB") // 当 JNDI 资源不存在时触发
public class MissingJndiConditionConfig {@Beanpublic String noJndiBean() {return "JNDI resource does NOT exist";}
}

(15) @ConditionalOnCloudPlatform

作用:运行在指定云平台时触发(Spring Cloud)。

@Configuration
@ConditionalOnCloudPlatform(Azure.class) // 当运行在 Azure 时触发
public class CloudConditionConfig {@Beanpublic String azureBean() {return "Bean for Azure environment";}
}

3. 条件注解对比表
注解触发条件典型场景参数示例来源框架
@Conditional自定义 Condition 接口实现的逻辑。灵活的自定义条件。@Conditional(CustomCondition.class)Spring Core
@ConditionalOnClass类路径存在指定类。检测依赖是否存在。@ConditionalOnClass(DataSource.class)Spring Core
@ConditionalOnMissingClass类路径不存在指定类。检测依赖缺失。@ConditionalOnMissingClass("DataSource")Spring Core
@ConditionalOnBean指定 Bean 存在。依赖其他 Bean 的存在。@ConditionalOnBean(name = "dataSource")Spring Core
@ConditionalOnMissingBean指定 Bean 不存在。避免重复注册 Bean。@ConditionalOnMissingBean(name = "myBean")Spring Core
@ConditionalOnExpressionSpEL 表达式为 true复杂条件判断。@ConditionalOnExpression("${app.env} == 'prod'")Spring Core
@ConditionalOnJava当前 Java 版本满足条件。根据 Java 版本启用功能。@ConditionalOnJava(baseline = JavaVersion.EIGHT)Spring Core
@ConditionalOnProperty配置属性存在且符合指定值。根据配置启用功能。@ConditionalOnProperty(name = "feature.enabled", havingValue = "true")Spring Core
@ConditionalOnResource类路径存在指定资源文件。根据资源文件存在与否配置。@ConditionalOnResource("classpath:config/prod.properties")Spring Boot
@ConditionalOnWebApplication应用是 Web 应用。Web 相关配置。@ConditionalOnWebApplicationSpring Boot
@ConditionalOnNotWebApplication应用不是 Web 应用。非 Web 应用配置。@ConditionalOnNotWebApplicationSpring Boot
@ConditionalOnSingleCandidate指定类型只有一个候选 Bean 或类型匹配。确保唯一 Bean。@ConditionalOnSingleCandidate(DataSource.class)Spring Boot
@ConditionalOnJndiJNDI 资源存在。根据 JNDI 资源触发配置。@ConditionalOnJndi("java:comp/env/jdbc/MyDB")Spring Boot
@ConditionalOnMissingJndiJNDI 资源不存在。根据 JNDI 缺失触发配置。@ConditionalOnMissingJndi("java:comp/env/jdbc/MyDB")Spring Boot
@ConditionalOnCloudPlatform运行在指定云平台(如 AWS、Azure)。云平台相关配置。@ConditionalOnCloudPlatform(Azure.class)Spring Cloud

4. 总结

Spring 及 Spring Boot 的条件化注解通过 条件判断 实现配置的动态加载,核心是 Condition 接口和其衍生注解。关键点如下:

  • 依赖检测@ConditionalOnClass@ConditionalOnMissingClass@ConditionalOnJndi
  • Bean 状态@ConditionalOnBean@ConditionalOnMissingBean@ConditionalOnSingleCandidate
  • 属性/环境@ConditionalOnProperty@ConditionalOnExpression@ConditionalOnJava
  • 应用类型@ConditionalOnWebApplication@ConditionalOnNotWebApplication
  • 云平台@ConditionalOnCloudPlatform(Spring Cloud)。
  • 自定义条件:通过 @Conditional 实现灵活扩展。

这些注解帮助开发者根据运行时环境、依赖、配置等条件动态注册 Bean,减少硬编码,提升代码的灵活性和可维护性。例如:

  • Spring Boot 的 @ConditionalOnResource 可用于根据配置文件是否存在来启用功能。
  • @ConditionalOnCloudPlatform 可在不同云平台(如 AWS、Azure)间切换配置。
  • @ConditionalOnJndi 适用于需要 JNDI 资源的环境(如企业级应用服务器)。

根据具体需求选择合适的注解,可显著简化配置逻辑并增强代码的适应性。


文章转载自:

http://BRYMMZJY.gqtxz.cn
http://sW2UnEYN.gqtxz.cn
http://rscT0Oai.gqtxz.cn
http://xX2omvW7.gqtxz.cn
http://vXuQiNzd.gqtxz.cn
http://1cGzOhY6.gqtxz.cn
http://nQDurtkk.gqtxz.cn
http://FgdWKV6O.gqtxz.cn
http://k2KWfUaH.gqtxz.cn
http://LHjEmX5R.gqtxz.cn
http://f1s4Y7yu.gqtxz.cn
http://pH2okxOM.gqtxz.cn
http://r4U6WOYN.gqtxz.cn
http://Z1NspJxr.gqtxz.cn
http://CJ6Jvdha.gqtxz.cn
http://owRsUkoi.gqtxz.cn
http://naNtVDd6.gqtxz.cn
http://LS1J1dNc.gqtxz.cn
http://XKHYtkUl.gqtxz.cn
http://tnp8BHTK.gqtxz.cn
http://nKmm4e6l.gqtxz.cn
http://m9ZgAKyP.gqtxz.cn
http://iu4aBIJP.gqtxz.cn
http://4XVB5Qmc.gqtxz.cn
http://p17Uvazd.gqtxz.cn
http://2pD7BjDS.gqtxz.cn
http://xaFa0uvd.gqtxz.cn
http://YrEn4SjF.gqtxz.cn
http://MGKt7hMH.gqtxz.cn
http://IxPpITye.gqtxz.cn
http://www.dtcms.com/wzjs/712691.html

相关文章:

  • 怎样做简单公司网站wap网站 微信登录
  • 东莞网站关键排名培训机构咨询
  • 网站建设商虎小程序娱乐公司网站建设价格
  • 网站域名格式西安市建设工程信息网诚信信息平台诚信承诺书在哪儿下载
  • 茶具网站模板桥梁建设网站在哪里可以投稿
  • 免费永久网站注册wordpress 建论坛
  • 网站 建设运行情况报告wordpress删除文章数据库
  • 网站建设的建议和意见网站建设兼职在哪找
  • 想要自己做一个网站怎么做网站建设案例精粹 电子书
  • 烟台做网站的价格网站SEO优化托管
  • wordpress字段seo赚钱暴利
  • 培训机构不退钱最怕什么举报厦门seo管理
  • 做网站和推广公司商城网站 备案
  • 中国沈阳网站在哪里下载wordpress4.8.3安装
  • 衡水住房和城乡建设局网站青岛专业制作网站的公司吗
  • 如何给企业做网站网站建设有那些内容
  • 保险网站建设的目标外贸建站主机空间哪家好
  • 网站建设收费标准策划站酷网官方入口网页版
  • 网站建设越秀wordpress不能创建怎么解决方法
  • 网站建设需注意的destoon 网站搬迁
  • 大型门户网站建设哪家好秦皇岛城市建设局官网
  • 什么网站做调查能赚钱wordpress机械模板下载
  • 网站建设样板济南网站假设推广
  • 爱看视频的网站钢构网架公司
  • 2017做网站挣钱吗北京建设银行
  • 浏阳企业网站建设找人做网站被骗
  • 制作网站网站网站建设浦东
  • 长春网站开发推荐织梦模板库
  • 上海网站设计的公司wordpress站点一百数据卡不
  • 门户网站开发注意哪些网站建设视频教程