springboot:根据不同配置注入不同实现的bean
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言`
- 我们在开发过程中,往往会碰到服务面向不同的应用场景的情况,需要根据配置进行bean的注入,以此来增加服务的灵活性;
- 一、注解ConditionalOnProperty
- 二、使用步骤
- 1.自定义配置项
- 2.读入数据
- 总结
前言`
我们在开发过程中,往往会碰到服务面向不同的应用场景的情况,需要根据配置进行bean的注入,以此来增加服务的灵活性;
提示:以下是本篇文章正文内容,下面案例可供参考
一、注解ConditionalOnProperty
springboot中常用注入属性有@Autowired和@Resource,其中还有@ConditionalOnProperty也能进行属性注入,且能根据配置文件来进行注入;
二、使用步骤
1.自定义配置项
配置项如下(示例):可任意定义
myService=service1
2.读入数据
代码如下(示例):
package com.zlp.controller;import com.zlp.service.MyService;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;@RestController
public class TestConditionalOnProperty {/*** 此处使用@Resource进行注入**/@Resourceprivate MyService myService;@GetMapping("/test")public void test(){myService.test();}}
MyServiceImpl 类:
package com.zlp.service.impl;import com.atssg.service.MyService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Component;@Component
@ConditionalOnProperty(name = "myService",havingValue = "service1")
@Slf4j
public class MyServiceImpl implements MyService {@Overridepublic void test() {log.info("I am Myservice1");}
}
MyServiceImpl2 类:
package com.zlp.service.impl;import com.zlp.service.MyService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Component;@Component
@ConditionalOnProperty(name = "myService",havingValue = "service2")
@Slf4j
public class MyServiceImpl2 implements MyService {@Overridepublic void test() {log.info("I am MyServiceImpl2");}
}
调用接口后,控制台打印:
I am Myservice1
总结
@ConditionalOnProperty 中name,havingValue属性 与 配置文件中的定义属性,如“myService=service1” ,能够对应上,那么springboot将会把对应的bean进行注入;
springboot:根据不同配置注入不同实现的bean相关推荐
- SpringBoot配置文件YAML配置注入(详解)
目录 一.SpringBoot配置文件 1. SpringBoot默认配置文件 2. 配置文件的作用 3. 配置文件的位置 4. 多环境切换 方式一:多配置文件 方式二:一个配置文件(yaml的多文档 ...
- SpringBoot:yaml配置注入bean
SpringBoot使用一个全局的配置文件 , 配置文件名称是固定的. 有分成application.properties和application.yml两种结构,这两种结构: application ...
- 3-8 基于SpringBoot连接数据库与配置MyBatis实操 创建表sql
11 13-8 基于SpringBoot连接数据库与配置MyBatis实操 springSecurity提供了 现成的基于内存管理的类 shiro则必须自 ...
- SpringBoot约定大于配置的特性解读 SpringBoot快速入门
SpringBoot约定大于配置 Spring官方网站本身使用Spring框架开发,随着功能以及业务逻辑的日益复杂,应用伴随着大量的XML配置文件以及复杂的Bean依赖关系.随着Spring 3.0的 ...
- SpringBoot项目实现配置实时刷新功能
需求描述:在SpringBoot项目中,一般业务配置都是写死在配置文件中的,如果某个业务配置想修改,就得重启项目.这在生产环境是不被允许的,这就需要通过技术手段做到配置变更后即使生效.下面就来看一下怎 ...
- SpringBoot拦截器配置
SpringBoot拦截器配置 自定义拦截器: com.example.mybatis2018.interceptor.MyInterCeptor package com.example.mybati ...
- springboot 使用mybatis-plus 配置乐观锁。
-----------------------------官方文档已更新,详细配置请访问:mybatis plus乐观锁插件 进行查看--------------------------------- ...
- Springboot 使用JPA Repository 注入失败问题
报错如下: APPLICATION FAILED TO START ***************************Description:Field customerRepository in ...
- SpringBoot 之数据源配置
文章目录 市面上的几种数据源比对 SpringBoot自动装配DataSource原理 HiKariCP 数据源配置 Druid 数据源配置 SpringBoot集成Druid连接池 Druid 多数 ...
最新文章
- vue常见错误汇总(自看)
- IDC公布2017年亚太地区数据中心10大预测
- 进程process与线程thread
- WindowsPhone7入手,实在的照片
- JSP_include指令和lt;jsp:includegt;
- python上下文管理器
- vs五子棋c语言代码,五子棋代码C语言版.doc
- 「Python」pycharm多项目虚拟环境切换
- VC++动态链接库编程之MFC DLL
- pandas: DataFrame在数据处理时一些常用的操作汇总
- c语言通过什么传递参数 寄存器,关于使用寄存器传参解决方法
- 26秒!全球销量第一的AI音箱就被腾讯黑掉了,然后变身窃听器
- CSS最基础的语法和三种引入方式
- 雷电模拟器修改本地IP
- 《计算机网络》在物理层和数据链路层扩展以太网
- 图像风格化——感知损失(perceptual loss)(2016)
- 利用Madmom识别和弦
- 中国人寿保费项目数据集
- 阿里云2023届实习生招聘启动啦,快来加入IoT安全吧
- 后台页面-制作铃铛带数字消息提示样式