手机网站和app的区别,建站智能模板,扬州 网站 建设,中国企业商务网站建设[QA] Profile 引入背景 随着 Spring 应用在不同环境#xff08;开发、测试、生产#xff09;中部署的需求增加#xff0c;配置文件的切换变得频繁。原有的方式需要手动修改配置或使用多个配置文件#xff0c;维护成本高。Profile 的出现使得开发者可以基于当前激活的… [QA] Profile 引入背景 随着 Spring 应用在不同环境开发、测试、生产中部署的需求增加配置文件的切换变得频繁。原有的方式需要手动修改配置或使用多个配置文件维护成本高。Profile 的出现使得开发者可以基于当前激活的 profile如 dev、test、prod来决定是否加载某个 Bean 或配置类。 [QA] Conditional 引入背景 Profile 虽然解决了环境差异问题但无法满足更复杂的条件判断需求。Conditional 提供了一个通用的条件化注册机制允许开发者通过实现 Condition 接口自定义条件逻辑。 [QA] ConditionalOnMissingBean 引入背景 Spring Boot 推出了自动配置机制旨在减少用户手动配置。在自动装配过程中为了避免重复创建相同类型的 Bean引入了该注解允许在容器中没有指定 Bean 时才进行自动创建。 [QA] ConditionalOnClass 引入背景 Spring Boot 的自动配置模块中很多配置依赖于第三方库的存在如 Tomcat、Jackson、JPA 等。如果项目中未引入这些依赖自动配置类可能会因找不到类而报错。ConditionalOnClass 的引入提供了一种优雅的方式在类路径存在指定类时才加载相关配置避免启动失败。
注解名称所属模块引入版本作用维度典型用途ProfileSpring FrameworkSpring 3.1 (2011)环境配置根据环境加载不同配置,开发 / 测试 / 生产环境切换数据源ConditionalSpring FrameworkSpring 4.0 (2013)自定义条件动态控制 Bean 加载ConditionalOnMissingBeanSpring BootSpring Boot 1.0 (2014)容器状态是否存在同类型 Bean,防止重复注册默认 BeanConditionalOnClassSpring BootSpring Boot 1.0 (2014)类路径检查类路径是否存在指定类,判断依赖是否存在以决定是否启用配置
注解名称所属模块引入版本是否推荐使用是否淘汰及替代建议ConditionalOnExpressionspring-context-support / spring-boot-autoconfigureSpring 3.1 (2011) / Boot 1.0✔️ 是灵活但复杂❌ 否Conditionalspring-contextSpring 4.0 (2013)✔️ 是❌ 否ConditionalOnMissingBeanspring-boot-autoconfigureSpring Boot 1.0 (2014)✔️ 是❌ 否ConditionalOnClassspring-boot-autoconfigureSpring Boot 1.0 (2014)✔️ 是❌ 否ConditionalOnBeanspring-boot-autoconfigureSpring Boot 1.0 (2014)✔️ 是❌ 否ConditionalOnPropertyspring-boot-autoconfigureSpring Boot 1.0 (2014)✔️ 是❌ 否ConditionalOnResourcespring-boot-autoconfigureSpring Boot 1.0 (2014)⚠️ 不常用⚠️ 推荐替代: ConditionalOnResourceCondition
典型用法
Spring Conditional, ConditionalOnMissingBean, ConditionalOnClass 等 典型用法 Spring Profile 典型用法