springboot 根据配置文件的不同,选择注入不同的bean
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot 根据配置文件的不同,选择注入不同的bean相关的知识,希望对你有一定的参考价值。
参考技术A 1.场景描述业务系统中,配置文件不同,使用的业务逻辑也不同。我们可以使用模板方法模式把业务分成多个service。如下图
2.ConditionalOnProperty源码说明
3.如何使用
AbstractServiceImpl1-- 默认使用的方法
UserServiceImpl1--
UserServiceImpl2--
使用时,直接注入service,会根据配置文件来选择哪个service生效
4.上面是针对一个配置项,如果有多个配置项,可以使用@ConditionalOnExpression,来根据表达式来选择使用哪个service
ConditionalOnExpression 源码说明
使用起来也比较方便
@ConditionalOnExpression("!$sence.cascade.enable:false && $sence.cascade.test:0 == 2")
springboot yaml配置注入
SpringBoot使用一个全局的配置文件 , 配置文件名称是固定的
-
application.properties
-
语法结构 :key=value
-
application.yml
-
语法结构 :key:空格 value
配置文件的作用 :修改SpringBoot自动配置的默认值,因为SpringBoot在底层都给我们自动配置好了;
比如我们可以在配置文件中修改Tomcat 默认启动的端口号。《server.port=8081》
yaml基础语法
说明:语法要求严格!
1、空格不能省略
2、以缩进来控制层级关系,只要是左边对齐的一列数据都是同一个层级的。
3、属性和值的大小写都是十分敏感的。
注意:
-
“ ” 双引号,不会转义字符串里面的特殊字符 , 特殊字符会作为本身想表示的意思;
比如 :name: "kuang \\n shen" 输出 :kuang 换行 shen
-
\'\' 单引号,会转义特殊字符 , 特殊字符最终会变成和普通字符一样输出
比如 :name: ‘kuang \\n shen’ 输出 :kuang \\n shen
对象、Map(键值对)
对象、Map格式:
k(方法):
v1: 值
v2: 值
行内写法
student: {name: qinjiang,age: 3}
数组( List、set )
用 - 值表示数组中的一个元素,比如:
pets: - cat - dog - pig
行内写法:
pets:
在使用yaml配置注入是需要加上这两个注解
以上是关于springboot 根据配置文件的不同,选择注入不同的bean的主要内容,如果未能解决你的问题,请参考以下文章
记一次springboot @Value注解无法注入配置文件的错误
springboot项目在IDEA根据不同的开发人员读取不同的配置文件
SpringBoot的Profiles根据开发环境和测试环境载入不同的配置文件