`
jifengjianhao
  • 浏览: 3590 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

springboot使用多数据源

 
阅读更多

在第一篇简单介绍了关于springboot的一些东西,现在开始慢慢进入高级一点的东西。一般的简单,比较小型的项目用到的数据库就一个,采用多个表来处理业务。但是当业务复杂一点,你可能就需要使用多数据源。由于业务的要求,你得使用不同的数据源。本人见过复杂的项目使用了十多个数据源,不过一般的用两个三个就OK。好了,开始咱们的代码。

package microservice.com.config;

import java.io.InputStream;
import java.util.Properties;

import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.jdbc.core.JdbcTemplate;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;

/**
 * 数据源配置
 *
 * @author 肖云鹤
 * 2016年12月10日
 */
@Configuration
public class DataSourceConfig {
   
    /**
     * ͬwhite数据源
     */
    @Bean(name="whiteDataSource", destroyMethod="close")
    @Qualifier("whiteDataSource")
    @Primary    //使用多数据源时需要加上这个注解
    public DruidDataSource whiteDataSource() throws Exception {
        InputStream is = null;
        Properties props = null;
       
        try {
            is = this.getClass().getClassLoader().getResourceAsStream("datasource.white.properties");
            props = new Properties();
            props.load(is);
           
        } finally {
            if (is != null) is.close();
        }
       
        DruidDataSource ds = (DruidDataSource) DruidDataSourceFactory.createDataSource(props);
        return ds;
    }
   
    /**
     * me数据源
     */
    @Bean(name="meDataSource", destroyMethod="close")
    @Qualifier("meDataSource")
    public DruidDataSource meDataSource() throws Exception {
        InputStream is = null;
        Properties props = null;
       
        try {
            is = this.getClass().getClassLoader().getResourceAsStream("datasource.me.properties");
            props = new Properties();
            props.load(is);
        } finally {
            if (is != null) is.close();
        }
       
        DruidDataSource ds = (DruidDataSource) DruidDataSourceFactory.createDataSource(props);
        return ds;
    }
   
    /**
     * 考试监管数据源
     */
    @Bean(name="xyDataSource", destroyMethod="close")
    @Qualifier("xyDataSource")
    public DruidDataSource xyDataSource() throws Exception {
        InputStream is = null;
        Properties props = null;
       
        try {
            is = this.getClass().getClassLoader().getResourceAsStream("datasource.xy.properties");
            props = new Properties();
            props.load(is);
        } finally {
            if (is != null) is.close();
        }
       
        DruidDataSource ds = (DruidDataSource) DruidDataSourceFactory.createDataSource(props);
        return ds;
    }
   
    /**
     * white Jdbc
     */
    @Bean(name="whiteJdbc")
    public JdbcTemplate whiteJdbc(@Qualifier("whiteDataSource")DruidDataSource dataSource){
        return new JdbcTemplate(dataSource);
    }
   
    /**
     * 书城Jdbc
     */
    @Bean(name="meJdbc")
    public JdbcTemplate meJdbc(@Qualifier("meDataSource")DruidDataSource dataSource){
        return new JdbcTemplate(dataSource);
    }
   
    /**
     * 校园易商城Jdbc
     */
    @Bean(name="xyJdbc")
    public JdbcTemplate xyJdbc(@Qualifier("xyDataSource")DruidDataSource dataSource){
        return new JdbcTemplate(dataSource);
    }
}
上面的是使用的spring自带的jdbctemple,我采用的是阿里巴巴的数据源,它自带加密工具。将datasource注入。需要注意的是 @Primary 这个注解,对同一个接口,可能会有几种不同的实现类,默认的采用一种实现。


driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/white
username=root
password=bNVOqb7WKLX5Bjnw+LMv92taj25KOxDimXxILPQjw42wgv+1lHzOH8kr97xDwWdhpY67QuYCS7sWN4W46YbkFA==
initialSize=1
maxActive=10
minIdle=3
maxWait=60000
removeAbandoned=true
removeAbandonedTimeout=180
timeBetweenEvictionRunsMills=60000
minEvictableIdleTimeMills=300000
validationQuery=select 1 from dual
testWhileIdle=true
testOnBorrow=false
testOnReturn=false
poolPreparedStatements=true
maxPoolPreparedStatementPerConnectionSize=50
filters=config,stat
connectionProperties=config.decrypt=true

这是我的数据源配置,你可以自行修改。也可以只是用账号,密码等简单的配置。

现在来使用Spring的JDBCtemple


@Component
public class meDao {
   
    @Autowired
    @Qualifier("meJdbc")
    private JdbcTemplate jdbc;
}

这里就注入了jdbc,使用的时候也挺方便。封装了基本的增删改查,批量查询等等。

    /**依据所有的查询用户*/
    public List<User> queryUserAll(){
       
        List <User> list = new ArrayList<User>();
        List<Map <String, Object>> result = jdbc.queryForList(allSql);
        for (Map <String, Object> map :result){
            User user = new User();
            user.setAddress((String) map.get("address"));
            user.setBuyername((String) map.get("buyername"));
            user.setEmail((String) map.get("email"));
            user.setRealname((String) map.get("realname"));
            user.setBuyerjf((int) map.get("buyerjf"));
            list.add(user);
        }
       
        return list;
    }

这里查询所有的用户,和你平时使用原生的JDBC操作类似,想要深入了解jdbcTemple可以看看Api。

基本上以上就是一个多数据源的配置。

分享到:
评论

相关推荐

    SpringBoot配置多数据源实现动态切换数据源

    本文将深入探讨如何在SpringBoot项目中配置多数据源,并实现数据源的动态切换,帮助你理解和掌握这一核心技能。 首先,我们理解"多数据源"的概念。在SpringBoot应用中,多数据源意味着系统能够连接并操作多个不同的...

    springboot实现多数据源而且加上事务不会使aop切换数据源失效

    本示例主要讲解如何使用Spring Boot结合MyBatis实现多数据源切换,并确保AOP事务管理仍然有效。 首先,我们需要配置多数据源。在Spring Boot中,可以使用`DataSource`接口的实现类,如`HikariCP`或`Druid`,创建两...

    springboot2.0多数据源集成hibernate配置hibernateDaoSupport示例

    本示例主要介绍如何实现Spring Boot 2.0多数据源的集成,并结合Hibernate进行配置,特别是在DAO层使用`HibernateDaoSupport`进行操作,而非使用JPA(Java Persistence API)。 首先,让我们了解Spring Boot 2.0的...

    springboot mybatis多数据源加事务嵌套

    springboot mybatis多数据源加事务嵌套 事务之间的调用 回滚 亲测可用 定义2个库分别建立 CREATE TABLE `user` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户编号', `user_name` varchar(25) ...

    SpringBoot操作多数据源(JPA+JdbcTemplate)

    本篇文章将探讨如何在Spring Boot中利用JPA(Java Persistence API)和JdbcTemplate来实现多数据源的管理,同时使用HikariCP作为高效的数据源连接池。 首先,让我们理解一下关键概念: 1. **Spring Boot**: 它是...

    springboot多数据源配置

    在Spring Boot应用中,多数据源配置是一项重要的技术实践,特别是在大型系统中,可能需要连接到多个数据库以实现数据隔离、读写分离或是分布式事务管理。Spring Boot以其强大的自动化配置能力,使得设置多数据源变得...

    Springboot 动态多数据源 jta分布式事务

    本资源针对的是Spring Boot动态多数据源和JTA(Java Transaction API)分布式事务的实现,对于初学者来说非常实用。下面我们将深入探讨这些知识点。 首先,让我们了解一下Spring Boot的多数据源。在许多业务场景下...

    SpringBoot+druid+多数据源示例

    本示例将详细讲解如何在SpringBoot项目中集成Druid并实现多数据源的自动切换。 首先,我们需要理解多数据源的概念。多数据源意味着应用程序可以同时连接和操作多个不同的数据库,这对于数据分层、高可用性和分布式...

    springboot 多数据源

    首先,我们来看“springboot 多数据源”这个概念。Spring Boot本身提供了对多种数据库的支持,如MySQL、Oracle、SQL Server等。在多数据源场景下,我们需要配置多个DataSource,以便在不同的业务场景下选择合适的...

    SpringBoot多数据源案例

    通过本案例,你可以深入理解SpringBoot中多数据源的配置和使用。在实际开发中,多数据源不仅能够帮助我们分离不同业务的数据,还能提高系统的可扩展性和维护性。如果你想要更深入地了解每个步骤的细节,建议查看作者...

    springboot druid maven多数据源(mysql+SqlServer)

    本项目将介绍如何在SpringBoot项目中结合Maven构建一个支持多数据源的系统,特别是如何处理MySQL和SQLServer两种不同的数据库类型,并使用Druid作为数据源连接池。 首先,我们需要理解“多数据源”这一概念。多数据...

    springboot+多数据源+shiro+springcloud.zip

    这是我自己为了学习springboot等相关知识搭建的一个简易的项目,里面主要包括springboot,shiro,mybatis,多数据源,springcloud的eureka集群,以及beetl的简单使用,springcloud的网关、oauth2授权等在其他的模块...

    SpringBoot多数据源成果源代码.rar

    10. **最佳实践**:在使用多数据源时,还需要考虑事务管理、数据一致性、性能优化等问题。例如,可以使用Spring的`@Transactional`注解配合动态数据源进行事务管理,同时注意避免频繁的数据源切换以提升性能。 综上...

    springboot多数据源即分布式事务解决方案

    SpringBoot作为一款轻量级的框架,提供了便捷的多数据源配置和分布式事务管理方案,使得开发者能够高效地管理和操作不同的数据库。本文将详细探讨SpringBoot如何实现多数据源以及分布式事务。 首先,我们要理解什么...

    springboot多数据源注册与切换

    Spring Boot以其便捷的配置和开箱即用的功能深受开发者喜爱,而"springboot多数据源注册与切换"则是应对复杂数据库环境的一个核心特性。本文将深入探讨如何在Spring Boot应用中实现多数据源的注册、切换以及相关的切...

    springboot多数据源代码

    在IT行业中,SpringBoot是一个非常流行的Java开发框架,它简化了Spring应用的初始搭建以及开发过程。本项目涉及的主题是...对这些文件进行深入研究,可以帮助你更好地理解和实践SpringBoot多数据源的配置与使用。

    基于 SpringBoot 多数据源 动态数据源 主从分离 快速启动器 支持分布式事务

    基于 SpringBoot 多数据源 动态数据源 主从分离 快速启动器 支持分布式事务。一个基于springboot的快速集成多数据源的启动器。支持 数据源分组 ,适用于多种场景 纯粹多库 读写分离 一主多从 混合模式。支持数据库...

    SpringBoot多数据源框架【整合配置及应用】.docx

    SpringBoot 微服务框架整合配置及应用中,多数据源依赖是指在同一个应用程序中使用多个数据源,以满足不同的业务需求。在本文中,我们将介绍如何在 SpringBoot 中使用多数据源框架,包括配置、依赖和应用。 首先,...

    springboot双数据源(oracle,mysql).rar

    本项目“springboot双数据源(oracle,mysql).rar”显然是一个使用SpringBoot实现多数据源的例子,允许应用程序同时连接并操作Oracle和MySQL两个数据库。以下将详细介绍实现这一功能的关键知识点。 1. **SpringBoot...

    SpringBoot 多数据源

    1. **配置多数据源**:在SpringBoot中,我们可以使用`@ConfigurationProperties`注解来自定义数据源配置。例如,为两个数据库分别配置名为`primary`和`secondary`的数据源: ```java @Configuration @...

Global site tag (gtag.js) - Google Analytics