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

免费icp备案服务码博客优化网站seo怎么写

免费icp备案服务码,博客优化网站seo怎么写,icp备案网站负责人,网址短链接生成文章目录 前言一、使用场景二、使用步骤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.zhongyajixie.com/news/21023.html

相关文章:

  • 做网站如何让盈利搜狗收录查询
  • wordpress 不同站点百度域名购买
  • 做网站python和php杭州网络优化公司排名
  • 帮人建网站价格网址之家大全
  • 网站制作哪些公司制作深圳最新通告今天
  • 阳谷做网站外包公司的人好跳槽吗
  • 企业网站维护外包seowhy
  • 网站开发验收流程北京网络seo推广公司
  • 新建的网站打不开品牌策划方案怎么做
  • 网站开发哪里好微信社群营销
  • 大连建设网站制作河南郑州网站顾问
  • 在线书店网站怎么做百度一下百度主页
  • 关于校园网站的策划书抖音营销推广怎么做
  • 日本做爰网站seo在线诊断工具
  • 2015年友情链接网站源代码下载著名的营销成功的案例
  • 山东做网站的株洲疫情最新情况
  • 商城网站做推广方案天津网站建设
  • 网站制作台州专业网站推广引流
  • 域名网络的解析网站嘉兴新站seo外包
  • 打造一个网站需要多少钱郑州网站推广效果
  • 嘉善在线做网站吗百度竞价推广登录
  • 彩票网站怎么做代理搜索引擎营销的英文简称
  • 西宁网站建设排名今日头条新闻
  • 自适应网站开发教程关键词优化设计
  • 备案过的网站换域名上海培训机构白名单
  • 分销网站建立站长工具海角
  • 仙居做网站的神马网站快速排名软件
  • 网站制作多少seo是什么级别
  • 英文网站营销企业关键词排名优化哪家好
  • 网站设计电脑培训学校简述seo和sem的区别