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

免费icp备案服务码seo搜索引擎优化工资薪酬

免费icp备案服务码,seo搜索引擎优化工资薪酬,coupang入驻条件2022,如何进行电子商务网站推广?文章目录 前言一、使用场景二、使用步骤1.错误示例2.ConditionalOnProperty的解决方案 总结 前言 ConditionalOnProperty 是Spring Boot中的条件注解,它的核心功能是通过属性名以及属性值来实现的,常被用于判断某个属性是否存在,然后决定某个…

文章目录

  • 前言
  • 一、使用场景
  • 二、使用步骤
    • 1.错误示例
    • 2.@ConditionalOnProperty的解决方案
  • 总结


前言

@ConditionalOnProperty 是Spring Boot中的条件注解,它的核心功能是通过属性名以及属性值来实现的,常被用于判断某个属性是否存在,然后决定某个Bean是否创建;


一、使用场景

一般用于是否要创建,或者注入到spring中的bean的条件判断,例如: spring中一定有对于mysql的一些默认配置,但是当我不引入mysql,yml中不做配置的时候,这些类是不会被注入的,当我在yml中引入mysql的相关配置,那么相应的数据源,mysql等相关bean就会被注入其中;

二、使用步骤

这里举个例子,也是项目中常见的问题,当一个实现类有两个实现类的时候,我们注入使用的时候会有问题;

1.错误示例

  • 一个接口
public interface TestConditionOnProperty {void sout();
}
  • 两个实现类
@Service
public class TestConditionOnProperty1 implements TestConditionOnProperty {@Overridepublic void sout() {System.out.println(">>>>>>>>>>>>>> TestConditionOnProperty1 <<<<<<<<<<<<");}
}@Service
public class TestConditionOnProperty2 implements TestConditionOnProperty {@Overridepublic void sout() {System.out.println(">>>>>>>>>>>>>> TestConditionOnProperty2 <<<<<<<<<<<<");}
}
  • 开始测试, 问题出现
@SpringBootTest
class TestConditionOnPropertyTest {@AutowiredTestConditionOnProperty testConditionOnProperty;@Testvoid sout() {testConditionOnProperty.sout();}
}

TestConditionOnProperty 应该是唯一的,但是找到了两个:
expected single matching bean but found 2: testConditionOnProperty1,testConditionOnProperty2

  • 解决方案: 加上@Qualifier ,指定其中一个具体实现类
@SpringBootTest
class TestConditionOnPropertyTest {@Qualifier("testConditionOnProperty1")@AutowiredTestConditionOnProperty testConditionOnProperty;@Testvoid sout() {testConditionOnProperty.sout();}
}

2.@ConditionalOnProperty的解决方案

  • 依然是如上代码,但是改造下,TestConditionOnProperty1 和 TestConditionOnProperty2 各增加一行代码
@Service
@ConditionalOnProperty(name = "TestConditionOnProperty",havingValue = "TestConditionOnProperty1")
public class TestConditionOnProperty1 implements TestConditionOnProperty {@Overridepublic void sout() {System.out.println(">>>>>>>>>>>>>> TestConditionOnProperty1 <<<<<<<<<<<<");}
}@Service
@ConditionalOnProperty(name = "TestConditionOnProperty",havingValue = "TestConditionOnProperty2")
public class TestConditionOnProperty2 implements TestConditionOnProperty {@Overridepublic void sout() {System.out.println(">>>>>>>>>>>>> TestConditionOnProperty2 <<<<<<<<<<<<<<");}
}
  • yml增加配置
TestConditionOnProperty: TestConditionOnProperty2

@ConditionalOnProperty(name = “TestConditionOnProperty”,havingValue = “TestConditionOnProperty2”)其中
name 与yml配置中的 TestConditionOnProperty对应
对应后,会读取到值为TestConditionOnProperty2, 与当前注解中的havingValue 值比对
结果为true生效,注入当前bean,结果为true失效,不注入当前bean
最终其实就是只注入了一个bean

  • 再次测试
@SpringBootTest
class TestConditionOnPropertyTest {@AutowiredTestConditionOnProperty testConditionOnProperty;@Testvoid sout() {testConditionOnProperty.sout();}
}

打印出第二个问题


总结

其实这个注解 @ConditionalOnProperty 相当于就是java SPI机制的另一种实现方式,更加灵活,在配置文件中更改,当注册中心为nacos,可以实现不重启项目就能自如切换相应实现类的效果;
也就是热加载的效果,热加载其实是 @RefreshScope 发生的了作用 @RefreshScope概述

http://www.khdw.cn/news/18065.html

相关文章:

  • 食品网站开发毕业设计影视网站怎么优化关键词排名
  • 内江做网站哪里便宜如何搜索关键词热度
  • 用yii框架做的网站如何搭建网络互联网推广
  • 重庆网站制作服务百度推广话术全流程
  • 四川省人民政府名单福建百度seo排名点击软件
  • 手把手网站开发百度搜索引擎排行榜
  • 广州做鞋的网站中国网站排名100
  • 怎么做关于狗的网站惠州关键词排名优化
  • 上海响应式网站建设费用学做网站需要学什么
  • 网站改版方案购物网站如何推广
  • 创办一个网站能够做那些事seo薪资水平
  • 合肥网站建设合肥网站制作软件开发培训中心
  • 设计一个网站的首页步骤房产网站模板
  • 专做童车批发的网站优质网站
  • 学做网站需要学那些程序搜狗推广登录平台
  • 网站建设服务条款网页广告
  • 三合一网站cmsseo优化系统
  • 芜湖哪里做网站品牌全案营销策划
  • 哪里有学习做网站的如何做线上推广
  • 自助网站建设程序b2b网站平台有哪些
  • 酒店做爰视频网站哪家网络公司比较好
  • 装修平台网站广州网络营销产品代理
  • 南山做网站推广乐云seoseo软件推广
  • 微网站的优点灰色词快速上排名
  • 天津重型网站建设风格站长之家域名信息查询
  • 网站建设 套餐seo资源咨询
  • 服装b2c商城网站建设十大看免费行情的软件下载
  • wordpress钻石插件南宁seo推广
  • wordpress头部空白seo工作职位
  • 电商供应链网站互联网营销推广怎么做