springboot基于@Bean注解注入多个数据源

Spring——Bean注入几种方式(放入容器) Spring系列初体验,使用Spring怎么能不知道这几种将Bean放入容器中的方法呢?XML、注解、实现接口.. 阅读详情

这里只是简单的去实现一个项目中可能会引入多个数据源的情况,这里只是简单的去实现多个数据源的情况

我这里使用的是druid的数据源,需要引入依赖

        <dependency>
            <groupId>com.github.drtrang</groupId>
            <artifactId>druid-spring-boot2-starter</artifactId>
            <version>1.1.10</version>
        </dependency>

配置文件:jdbc.properties

#这里面两个数据库连接随便写的,只是为了实现多个数据源

#数据库1
dev.driverClassName=111111111
dev.url=111111111
dev.username=111111111
dev.password=111111111


#数据库2
uat.driverClassName=222222222
uat.url=222222222
uat.username=222222222
uat.password=222222222

接下来就是两个配置数据源,基于@Bean注解放入ioc容器中,需要注意的是:设置的第一个数据源的bean的name属性值必须为dataSource,否则就会报错

第一个配置数据源的代码:JdbcConfiguration01.java

package com.shenlong.demo.config;

import com.alibaba.druid.pool.DruidDataSource;
import com.shenlong.demo.pojo.TestDemo;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

import javax.sql.DataSource;

@Configuration
@PropertySource("classpath:jdbc.properties")
public class JdbcConfiguration01 {

    @Value("${dev.driverClassName}")
    private String driverClassName;

    @Value("${dev.url}")
    private String url;

    @Value("${dev.username}")
    private String username;

    @Value("${dev.password}")
    private String password;

    @Bean(name = "dataSource")//注意这里必须有个为dataSource
    public DataSource getDataSource(){
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setDriverClassName(driverClassName);
        druidDataSource.setUrl(url);
        druidDataSource.setUsername(username);
        druidDataSource.setPassword(password);
        return druidDataSource;
    }

    @Override
    public String toString() {
        return "JdbcConfiguration01{" +
                "driverClassName='" + driverClassName + '\'' +
                ", url='" + url + '\'' +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

第二个配置数据源的代码:JdbcConfiguration02.java

package com.shenlong.demo.config;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

import javax.sql.DataSource;

@Configuration
@PropertySource("classpath:jdbc.properties")
public class JdbcConfiguration02 {

    @Value("${uat.driverClassName}")
    private String driverClassName;

    @Value("${uat.url}")
    private String url;

    @Value("${uat.username}")
    private String username;

    @Value("${uat.password}")
    private String password;

    @Bean(name = "uatDataSource")//这里的bean可以随便写了
    public DataSource getDataSource(){
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setDriverClassName(driverClassName);
        druidDataSource.setUrl(url);
        druidDataSource.setUsername(username);
        druidDataSource.setPassword(password);
        return druidDataSource;
    }

    @Override
    public String toString() {
        return "JdbcConfiguration02{" +
                "driverClassName='" + driverClassName + '\'' +
                ", url='" + url + '\'' +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

上面配置的两个数据源,需要注意的是,如果需要引入这两个数据源,需要对应的去获取IOC各自的bean name属性值,即:

JdbcConfiguration01.java里面是@Bean(name = "dataSource"),引入的时候,名称同样要用到dataSource。即:

@Autowired
private DataSource dataSource;

JdbcConfiguration02.java里面是@Bean(name = "uatDataSource"),引入的时候,名称同样要用到uatDataSource。

@Autowired
private DataSource uatDataSource;

可以使用测试类debug查看对应的数据源的值

测试类代码如下:

package com.shenlong.demo;

import com.shenlong.demo.config.JdbcConfiguration01;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import javax.sql.DataSource;

@RunWith(SpringRunner.class)
@SpringBootTest
class SpringbootDemoApplicationTests {

    @Autowired
    private JdbcConfiguration01 jdbcConfiguration;

    @Autowired
    private DataSource dataSource;

    @Autowired
    private DataSource uatDataSource;

    @Test
    public void test(){

        System.out.println(dataSource);
        System.out.println(uatDataSource);
        System.out.println(jdbcConfiguration);

    }


}

,下面是各自的数据源获取的值:

MyBatis整合Springboot多数据源实现 数据源,实际就是数据库连接池,负责管理数据库连接,在Springboot中,数据源通常以一个bean的形式存在于IOC容器中,也就是我们可以通过依赖注入的方式拿到数据源,然后再从数据源中获取数据库连接。那么什么是多数据源呢,其实就是IOC容器中有多个数据源的bean,这些数据源可以是不同的数据源类型,也可以连接不同的数据库。本文将对多数据如何加载,如何结合MyBatis使用进行说明,知识点脑图如下所示。数据源,其实就是数据库连接池,负责数据库连接的管理和借出。目前使用较多也是性能较优的有如下几款数据源。 阅读详情

相关推荐

SpringBoot配置@PropertySource、@ImportResource、@Bean注解

引言 @ConfigurationProperties 与@Bean结合为属性赋值 与@PropertySource(只能用properties文件)结合读取指定文件 @Validation 支持使用JSR303为配置文件进行值校验 @ImportResource 读取外部的配置文件 @PropertySource 作用 加载指定的配置文件。 在之前我们知道@Configurati...

初学者 2802

spring的@Bean注解

@Bean可以用于方法,注解上面 @Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Bean { @AliasFor("name") String[] value() default {}; @AliasFor("value") String[] name() defaul

u014496893的博客 444

Multisim实战:从零搭建体温检测报警电路(附完整仿真文件+调试技巧)

本文详细介绍了如何使用Multisim从零搭建体温检测报警电路,涵盖LM35温度传感器、LM358运算放大器等核心器件的选型与连接,以及信号调理、阈值比较和数码管显示等关键电路设计。附赠完整仿真文件和实用调试技巧,帮助电子工程初学者快速掌握体温温度检测系统的设计与实现。

weixin_28285943的博客 294

Spring:IOC/DI注解开发管理第三方bean

🍭SSM框架01:Spring的IoC和DI,以及手把手带你创建Spring核心配置文件 🍭SSM框架02:从0-1学习Spring配置文件 🍭为什么要学Spring?学什么?怎么学? 🍭Spring到底是如何来实现IOC和DI?案例解析入门篇 🍭万字详解Spring之IOC全部知识点 🍭详解DI相关内容,一文掌握DI配置与使用 🍭Spring掌握IOC/DI配置管理第三方bean 🍭Spring核心容器环境配置、创建、依赖注入等 🍭Spring掌握IOC/DI注解管理第三方bean今日目

黑马程序员官方博客 1381

如何利用Arcgis进行地统计学分析(三):空间插值方法选择与优化

本文深入探讨了在Arcgis中进行地统计学分析时,如何根据探索性数据分析(EDA)结果科学选择与优化空间插值方法。文章对比了IDW、RBF、克里金等主流方法的适用场景与核心参数,并通过实战案例详解了从数据诊断到模型调优的完整流程,强调结合半变异函数与趋势分析进行“对症下药”,以提升插值结果的精度与可靠性。

weixin_29281915的博客 121

AMD 3D V-Cache技术解析:CPU缓存堆叠如何突破性能瓶颈

在半导体领域,缓存(Cache)是提升处理器性能的关键技术,其核心原理是在高速CPU核心与慢速主存之间建立数据中转站,以缓解“内存墙”问题。随着摩尔定律放缓,传统平面扩展缓存面临面积成本高、延迟增加等挑战。3D封装技术应运而生,通过垂直堆叠实现极致的互联密度与带宽,成为突破性能瓶颈的重要工程路径。这项技术的价值在于能以更优的功耗和延迟,显著提升缓存容量,从而改善游戏、科学计算等数据密集型应用的性能。以AMD 3D V-Cache为代表的Hybrid Bonding(混合键合)工艺,正是这一趋势的典型实践,它

weixin_30432579的博客 418

Springboot~多个数据源时自定义datasource的bean

当我们的项目里有多种数据源时,mysql,h2,mongodb,es等等,这时你需要为每种数据源添加自己的bean类,在bean里构建配置,而直接在yml里的配置往往会出现循环引用的问题。 org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'scopedTarget.dataSource': Requested bean is currently in creat

V539413949的博客 2074

基于FPGA的万兆以太网学习(1)

万兆(10G) 以太网测速视频:SFP+屏蔽笼可以插入千兆或万兆光模块。SFP+信号定义与 SFP 一致。

baidu_34971492的博客 2250

springboot 使用多数据源

1:引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.spr

weixin_44971379的博客 166

PostgreSQL:详解如何搭建流复制集群

PostgreSQL流复制集群搭建指南摘要 本文详细介绍了PostgreSQL流复制集群的部署流程。流复制通过主节点实时传输WAL日志到备节点实现数据同步,支持高可用和读写分离。部署步骤包括:1)准备相同版本的主备节点环境;2)配置主节点的postgresql.conf和pg_hba.conf;3)创建专用复制用户;4)使用pg_basebackup初始化备库;5)验证复制状态。文章还涵盖复制槽、同步复制等高级配置,以及故障切换方法。该方案可实现数据实时同步,备库提供只读查询服务,是构建高可用Postgre

数据知道的博客 2573

RICHARDSON-LUCY 去卷积简介

Lucy去卷积1.泊松过程及联合概率分布2.极大似然估计参考文献 1.泊松过程及联合概率分布 首先假设相机接收光子生成图像的过程符合泊松分布。 因此,一次曝光过程中,某像素位置接收到iii个光子的概率p(i)p(i)p(i)为: p(i)=exp⁡(−λ)⋅λii!\qquad\qquad p(i)=\exp(-\lambda)\cdot\cfrac{\lambda^{i}}{i!}p(i)=exp(−λ)⋅i!λi​ 那么针对一张M∗NM*NM∗N的图像,所有像素的联合概率分布可以描述为: P(I)=∏e

驽马十驾,功在不舍;锲而不舍,金石可镂。 8695

SpringBoot注解--10--@Bean,对象注入的三种方法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

时光里的博客 4084

OpenDataLab 大模型训练数据集下载记录

大模型 训练数据集

u013558123的博客 3348

@Bean注解详解

转载自:https://www.cnblogs.com/cxuanBlog/p/11179439.html @Bean 注解全解析 目录 @Bean 基础声明 @Bean 基本构成及其使用 @Bean 注解与其他注解产生的火花 @Profile 注解 @Scope 注解 @Lazy 注解 @DependsOn 注解 @Primary 注解 随着SpringBoot的流行,基于注解式开发的热潮逐渐覆盖了基于XML纯配置的开发,而作为...

Munger6的博客 1万+

用 Custom Entity 打造 RAP Value Help:从能跑到好用的深度踩坑笔记

本文介绍了在RAP项目中实现Value Help(Fiori输入帮助)的完整流程。通过Custom Entity方式,开发者可以灵活构建不依赖数据库实体的值帮助功能,但需手动实现CDS原本提供的过滤、排序、分页等能力。文章以一个典型场景为例,详细说明了如何为Partner维护界面的City字段创建可搜索的值帮助,包括创建查询实现类、绑定CDS Custom Entity、服务发布等关键步骤,并特别指出了处理排序分页请求等常见问题。最后强调在ABAP Cloud环境下需要自行实现查询能力,而非依赖传统工具类。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 142

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

SpringBoot @Bean注解

SpringBoot中,我们可以使用@Bean将自定义的一个类注入到spring容器中,让spring容器去管理bean,其相当于之前的配置文件中的<bean id="" class=""/> 直接贴代码,我们先建立一个配置类,类似之前的配置xml,然后在其中将自己的bean交给spring去管理。 package com.mayun.study.config; import com.mayun.study.bean.Monster; import org.springframework

白不懂黑的静的专栏 4513

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

SpringBoot - @Bean注解详解

Spring在启动时能够把BEAN(JAVA组件)注册到ioc容器里,实现控制反转,开发人员在使用Spring开发应用时,是看不到new关键字的,所有对象都应该从容器里获得,它们的生命周期在放入容器时已经确定。@Bean注解就是把我们将要实例化的对象转化成一个Bean,放在Spring容器中,等我们使用时,就会和@Autowired、@Resource配合到使用拿到该实例。

记录并分享 1万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

spring boot中通过注解@Bean声明的bean的名称是什么?

问题 spring boot中我们常常会在configuration类中通过@Bean注解去声明Bean。 但是很多人不清楚默认情况下,通过@Bean注解声明的Bean的名称是什么? 请问,如下代码声明bean的名称是什么? @Configuration public class LogAutoConfigure { @Bean public Queue queueTest() { return new Queue("log-queue", true); } } 为

弹指天下 3万+

SpringBoot注解之@Configuration、@Bean、@Component

SpringBoot注解之@Configuration、@Bean、@Component 首先:我们先简单描述一下这三个的作用 @Component注解表明一个类会作为组件类,并告知Spring要为这个类创建bean。 @Bean注解告诉Spring这个方法将会返回一个对象,这个对象要注册为Spring应用上下文中的bean。通常方法体中包含了最终产生bean实例的逻辑。用于显式声明单个bean,而不是让Spring像上面那样自动执行它。它将bean的声明与类定义分离,并允许您精确地创建和配置bean。另外

舌尖上的蛋炒饭的博客 2872

springboot 配置多数据源(Aop+注解实现)

springboot 配置多数据源(Aspect+注解实现) 在实际项目中很多时候会涉及到多个数据库的访问,或者数据库读写分离的形式。 下面通过使用 Aspect+注解来实现mybatis的多数据源配置 动态数据源流程说明 Spring Boot 的动态数据源,本质上是把多个数据源存储在一个 Map 中,当需要使用某个数据源时,从 Map 中获取此数据源进行处理。而在 Spring 中,已提供了抽象类 AbstractRoutingDataSource 来实现此功能。因此,我们在实现动态数据源的,只需要继承

mj的博客 4392

Spring中@Bean注解和@Configuration、@Component注解组合使用的差异

一、@Bean的“full”模式和“lite”模式 在一般常见情况下,@Bean注解在@Configuration类中声明,称之为“full”模式;当@Bean注解和@Component注解组合使用时,称之为“lite”模式。这两种组合使用的情况,初次看文档时没看明白,多看了几次又跑了测试代码,才大致理解了区别。 二、两种模式的差异 如果只是把@Be...

灵颖桥人的博客 5328

springboot几大注入注解方法的总结

对于springboot中的几个注入 @Autowired、 @Resource 、@Component 、. @Configuration、 @Qualifie、@Bean等方法的自我见解

谢萌新 3299

SpringBoot注解之@Bean和它的朋友们

Configuration 和 @Bean:用于集中管理和定义Bean,提供灵活的配置选项,适合需要复杂配置或初始化逻辑的场景。@Component 及其衍生注解:用于标记Spring管理的组件,实现自动化Bean注册,适合简单且不需要复杂配置的Bean。衍生注解(如@Service、@Repository、@Controller)提供了更明确的角色说明,有助于代码的可读性和维护性。@Autowired:用于简化依赖注入过程,确保依赖关系清晰明了且易于维护。

进一步有进一步的欢喜~ 1392

springboot四种属性注入方式

文章目录一、文件1、application.properties文件2、JdbcProperties文件3、JdbcConfiguration文件二、在JdbcConfiguration类中注入JdbcProperties四种方式1、@Autowired注入2、构造函数注入3、@Bean方法的参数注入4、更优雅的注入 在上篇博文中,我们以连接池配置的例子实践了spring框架中java配置方式的属...

景月娇-Kathy 2624

@Value和@Bean注解的执行顺序问题

Springboot中使用@Configruation和@Bean一起将Bean注册到ioc容器中,而@Value常用于将yml配置文件中的配置信息注入到类的成员变量中。当@Configruation、@Bean和@Value出现在同一个类中时,@Bean会比@Value先执行,这会导致当@Bean注解的方法中用到@Value注解的成员变量时,无法注入(null)的情况。例如在为Feign创建配置类,以实现Feign的权限验证时,需要将yml文件中的用户名和密码注入到配置类的成员变量中,@Bean注解方法则

qq_22339269的博客 4994

springboot注解之@Configuration和@Bean组合使用

springboot注解之@Configuration和@Bean组合使用 1.@Configuration作用 相当于传统的 xml 配置文件,如果有些第三方库需要用到 xml 文件,建议仍然通过 @Configuration 类作为项目的配置主类——可以使用 @ImportResource 注解加载 xml 配置文件。 2.@Bean注解的作用 用 @Bean 标注方法等价于 XML 中配置的 bean。 相当于 XML 中的, 放在方法的上面,而不是类,意思是产生一个 bean, 并交给 spring

java技术博客 1641
上一篇: Sprngboot注解bean注入数据源报错
下一篇: springboot缓存——@Cacheable
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值