`
endual
  • 浏览: 3566134 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java支持多数据源

    博客分类:
  • java
 
阅读更多
spxcms是否支持多数据源?
文档 > 二次开发 2019-04-30 12:56 阅读855

首先要确定多数据源是指什么。

如果多数据源是指系统中的表分别放到不同数据库里(比如,栏目表cms_node放到A数据库,文章表cms_info放到B数据库),这种情况是不支持的。

如果是系统中的表放到一个数据库里,但还希望通过二次开发从其它数据库里读取一些数据,这种情况是可以的。

Jspxcms系统中使用的框架是spring-boot、spring-data-jpa。本质上说,是否支持多数据源只和这些框架有关,和系统本身无关。spring-boot官方文档里有介绍多个数据源的配置方法 https://docs.spring.io/spring-boot/docs/1.5.20.RELEASE/reference/htmlsingle/#howto-two-datasources ,网上也有大量的教程。

修改数据库连接配置

配置文件src/main/resources/application.properties。

将默认数据库配置的spring.datasource前缀改为app.datasource.first,另外再创建第二个数据源app.datasource.second。

#spring.datasource.url=jdbc:mysql://localhost/jspxcms?characterEncoding=utf8
#spring.datasource.username=root
#spring.datasource.password=password
#spring.datasource.driver-class-name=com.mysql.jdbc.Driver

app.datasource.first.url=jdbc:mysql://localhost/jspxcms?characterEncoding=utf8
app.datasource.first.username=root
app.datasource.first.password=password
app.datasource.first.driver-class-name=com.mysql.jdbc.Driver

app.datasource.second.url=jdbc:mysql://localhost/second_database?characterEncoding=utf8
app.datasource.second.username=root
app.datasource.second.password=password
app.datasource.second.driver-class-name=com.mysql.jdbc.Driver
增加数据源配置代码

在Java配置文件中增加数据源配置代码com.jspxcms.core.Application。第二个数据源使用JdbcTemplate访问数据。

    @Bean
    @Primary
    @ConfigurationProperties("app.datasource.first")
    public DataSourceProperties dataSourceProperties() {
        return new DataSourceProperties();
    }

    @Bean
    @Primary
    @ConfigurationProperties("app.datasource.first")
    public DataSource dataSource() {
        return dataSourceProperties().initializeDataSourceBuilder().build();
    }

    @Bean
    @ConfigurationProperties("app.datasource.second")
    public DataSourceProperties secondDataSourceProperties() {
        return new DataSourceProperties();
    }

    @Bean
    @ConfigurationProperties("app.datasource.second")
    public DataSource secondDataSource() {
        return secondDataSourceProperties().initializeDataSourceBuilder().build();
    }

    @Bean
    public JdbcTemplate jdbcTemplate() {
        return new JdbcTemplate(secondDataSource());
    }
使用范例

至此多个数据源配置完成。使用范例如下:

@Controller
public class MyController {
    @GetMapping("/second_data_source")
    public String index(HttpServletRequest request, org.springframework.ui.Model modelMap) {
        List<Map<String, Object>> data = jdbcTemplate.queryForList("select * from my_table");
        for (Map<String, Object> d : data) {
            System.out.println(d.get("my_field"));
        }
    }

    @Autowired
    private JdbcTemplate jdbcTemplate;
}
分享到:
评论

相关推荐

    java多数据源—源码(支持sqlserver,mysql,oracle等等)

    java多数据源—源码(支持sqlserver,mysql,oracle等等);解压后,直接使用idea导入项目,默认是打开了多数据源的,项目里面有现成的sql文件,执行sql文件;多数据源的开关在application-local.yml文件里面的guns:...

    java spring 多数据源

    在Java Spring框架中,多数据源的实现是一个重要的特性,特别是在大型企业级应用中,它允许应用程序连接到多个数据库,从而实现数据隔离、负载均衡或读写分离等高级功能。本教程将深入探讨如何在Spring中配置和管理...

    Java多数据源源码

    在Java开发中,多数据源是指应用程序需要连接和操作多个不同的数据库。这通常发生在大型系统中,例如,可能需要一个数据库来存储用户信息,另一个数据库处理订单,还可能有第三个数据库用于日志记录。Spring Boot...

    java简单分布式架构,多个数据源,线程池多线程访问

    综上所述,这个项目涉及到的知识点包括:分布式系统设计、Java多线程与线程池、Spring框架的多数据源支持、MyBatis的使用以及Spring的事务管理。通过这些技术的组合,可以构建出一个高效、可扩展的分布式应用,以...

    java 多数据源

    在Java开发中,多数据源是指应用程序可以同时连接并操作多个不同的数据库。这种技术在大型系统中非常常见,比如在需要实现数据隔离、读写分离、分库分表等复杂需求时,多数据源就显得尤为重要。Spring、SpringMVC和...

    java多数据源注解方式

    在Java开发中,多数据源配置是常见的需求,特别是在大型企业级应用中,可能需要连接到多个数据库,例如,一个用于存储主业务数据,另一个用于日志或审计数据。本篇将详细介绍如何通过注解的方式来实现Java中的多数据...

    java多数据源自动切换

    在Java开发中,多数据源是指应用程序连接到多个数据库以实现不同的业务需求。这通常发生在分布式系统、微服务架构或需要隔离不同业务数据的情况下。在本主题中,我们将深入探讨如何利用Spring AOP(面向切面编程)...

    Java 分布式事务(多数据源)

    当我们谈论“Java分布式事务(多数据源)”时,这通常涉及到处理跨越多个数据库或数据源的事务一致性问题。在单个数据库中,我们可以利用ACID(原子性、一致性、隔离性和持久性)特性来确保事务的可靠性,但在分布式...

    几种常用的Java数据源解决方案

    在Java开发过程中,数据源(DataSource)扮演着非常重要的角色,它负责管理数据库连接资源,为应用程序提供高效、可靠的数据库访问支持。`javax.sql.DataSource`接口定义了标准的数据源接口规范,不同的实现方式能够...

    jasperreport+ireport创建javaBean多数据源报表

    **多数据源支持** jasperreport允许使用多个数据源,这对于处理复杂报表场景非常有用。例如,一个报表可能需要合并来自不同数据库或不同JavaBean的数据。jasperreport通过定义多个JRDataSource和在报表设计中分别...

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

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

    动态切换多数据源

    5. **实现原理**:在Java中,通常通过Spring框架的DataSource和AbstractRoutingDataSource类来实现多数据源。DataSource是Java的JDBC API,用于管理数据库连接。AbstractRoutingDataSource则可以根据某种策略(如...

    Spring动态切换多数据源Demo

    在Spring框架中,多数据源的支持使得应用可以同时连接并操作多个不同的数据库,这在分布式系统、微服务架构或者需要处理多种数据类型的场景下非常有用。"Spring动态切换多数据源Demo"是一个示例项目,它展示了如何在...

    spring 动态多数据源配置代码

    Spring可以通过XML配置或Java配置来实现多数据源。Java配置更符合现代开发习惯,也更易于理解和维护。 3. **核心组件**: - `AbstractRoutingDataSource`:这是Spring提供的核心类,用于动态路由数据源。它会根据...

    spring多数据源

    在许多实际项目中,我们可能需要连接并操作多个数据库,比如主从数据库、读写分离、不同环境的数据隔离等,这时就需要用到Spring的多数据源支持。 Spring多数据源允许我们在一个应用中同时管理多个数据库连接,通过...

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

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

    spring boot 2多数据源,里面有hibernate和mybatis的多数据源代码

    这些代码可以直接集成到你的项目中,只需要调整为匹配你的数据库配置,就可以实现Spring Boot 2下的多数据源支持,同时利用Hibernate和MyBatis的优势。 总之,多数据源的实现是Spring Boot 2应用中的高级特性,它...

    Spring Boot+Jpa多数据源配置Demo(支持不同数据库)

    Spring Boot结合JPA(Java Persistence API)和JdbcTemplate,为开发者提供了灵活且强大的多数据源配置能力。本示例将详细介绍如何在Spring Boot项目中实现这样的配置,以支持不同类型的数据库。 首先,我们要理解...

    如何在spring框架中解决多数据源的问题

    通过上述步骤,我们可以在Spring框架中实现多数据源的支持,并且通过装饰者模式实现了数据源的动态切换,解决了单例模式下的数据源争用问题。这种方法不仅提高了系统的灵活性,还增强了系统的可扩展性和可维护性。在...

    springboot多数据源即分布式事务解决方案,添加对多线程的支持

    本教程将深入探讨如何在Spring Boot环境下实现多数据源操作及分布式事务管理,并加入对多线程的支持。 首先,我们来理解多数据源的概念。在大型系统中,往往需要连接多个数据库,如主库、从库、测试库等。Spring ...

Global site tag (gtag.js) - Google Analytics