广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Spring单数据源的配置详解
  • 415
分享到

Spring单数据源的配置详解

2024-04-02 19:04:59 415人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录前言一、生成项目骨架(SpringBoot),运行一个简单的程序二、选择原生spring方式配置数据源前言 spring数据源的配置网络上有很多例子,这里我也来介绍一下单数据源配

前言

spring数据源的配置网络上有很多例子,这里我也来介绍一下单数据源配置的例子,基于SpringBoot的方式和原生的Spring的方式。

一、生成项目骨架(SpringBoot),运行一个简单的程序

访问:https://start.spring.io/ ,选择必要的依赖

下面我们先看下Application类的代码:


@SpringBootApplication
@Slf4j
public class SpringDatasourceApplication implements CommandLineRunner {

	@Autowired
	private DataSource dataSource;

	@Autowired
	private JdbcTemplate jdbcTemplate;

	public static void main(String[] args) {
		SpringApplication.run(SpringDatasourceApplication.class, args);
	}

	@Override
	public void run(String... args) throws Exception {
		showConnection();
		showData();
	}

	private void showConnection() throws sqlException {
		log.info("数据源:"+dataSource.toString());
		Connection conn = dataSource.getConnection();
		log.info("连接:"+conn.toString());
		conn.close();
	}

	private void showData() {
		jdbcTemplate.queryForList("SELECT * FROM user")
				.forEach(row -> log.info("记录:"+row.toString()));
	}
}

application.properties文件的配置项,我们可以看到我们使用的h2数据库


management.endpoints.WEB.exposure.include=*
spring.output.ansi.enabled=ALWAYS

spring.datasource.url=jdbc:h2:mem:demodb
spring.datasource.username=sa
spring.datasource.passWord=

在资源文件目录,写入两个文件,一个是data.sql、一个是schema.sql

schema.sql内容是:


CREATE TABLE user (ID INT IDENTITY, name VARCHAR(64),age INT);

data.sql内容是:


INSERT INTO user (ID,name,age) VALUES (1, '张三',18);
INSERT INTO user (ID, name,age) VALUES (2, '李四',19);

运行代码,结果如下:


其实我们并没有去对DataSource进行bean配置,只是指定了数据库的类型,加载了建表语句和初始化数据语句,可以看到连接池是Hikari,这也是springboot默认的连接池。
由于是使用的内置数据库,我们可以在代码中

这也是因为springboot给我们自动装配了我们所需要的信息,由于我们引入了actuator,我们可以通过Http://localhost:8080/actuator/beans 看到springboot帮我们装载了很多的bean,有些可能是我们根本用不到的。下面我们讲一下原生Spring方式怎么实现配置数据源。

二、选择原生Spring方式配置数据源

pom文件配置内容:


<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-dbcp2</artifactId>
            <version>2.8.0</version>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>1.4.200</version>
            <scope>runtime</scope>
        </dependency>
		```
		
		**创建applicationContext.xml文件,内容如下:**  
```xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

    <context:component-scan base-package="com.xxx.xxxx" />
    <!--
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
          destroy-method="close">
        <property name="driverClassName" value="org.h2.Driver"/>
        <property name="url" value="jdbc:h2:mem:testdb"/>
        <property name="username" value="SA"/>
        <property name="password" value=""/>
    </bean>
    -->
</beans>

** 自定义DataSource,这里使用注解来实现(使用dbcp连接池) **


@Configuration
@EnableTransactionManagement
public class DataSourceDemo {
    @Autowired
    private DataSource dataSource;

    public static void main(String[] args) throws SQLException {
        ApplicationContext applicationContext =
                new ClassPathXmlApplicationContext("applicationContext*.xml");
        showBeans(applicationContext);
        dataSourceDemo(applicationContext);
    }

    @Bean(destroyMethod = "close")
    public DataSource dataSource() throws Exception {
        Properties properties = new Properties();
        properties.setProperty("driverClassName", "org.h2.Driver");
        properties.setProperty("url", "jdbc:h2:mem:testdb");
        properties.setProperty("username", "sa");
        return BasicDataSourceFactory.createDataSource(properties);
    }

    @Bean
    public PlatfORMTransactionManager transactionManager() throws Exception {
        return new DataSourceTransactionManager(dataSource());
    }

    private static void showBeans(ApplicationContext applicationContext) {
        System.out.println(Arrays.toString(applicationContext.getBeanDefinitionNames()));
    }

    private static void dataSourceDemo(ApplicationContext applicationContext) throws SQLException {
        DataSourceDemo demo = applicationContext.getBean("dataSourceDemo", DataSourceDemo.class);
        demo.showDataSource();
    }

    public void showDataSource() throws SQLException {
        System.out.println(dataSource.toString());
        Connection conn = dataSource.getConnection();
        System.out.println(conn.toString());
        conn.close();
    }
}

运行main方法:


可以看到可以实现和springboot一样的效果

  • 通过上面的两个例子,我们可以看出SpringBoot帮我们实现了如下功能:
  • 通过DataSourceAutoConfiguration 配置 DataSource
  • 通过DataSourceTransactionManagerAutoConfiguration 配置 DataSourceTransactionManager
  • 通过JdbcTemplateAutoConfiguration 配置 JdbcTemplate

当然上面是按需来配置的,如果我们在代码中已经配置了一个DataSource,SpringBoot不会再帮我们配置一个DataSource

在实际情况下,我们可能需要在应用中配置多个数据源,下篇文章我将介绍多个数据源的配置方式。

到此这篇关于Spring单数据源的配置详解的文章就介绍到这了,更多相关Spring单数据源的配置内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Spring单数据源的配置详解

本文链接: https://www.lsjlt.com/news/133621.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Spring单数据源的配置详解
    目录前言一、生成项目骨架(SpringBoot),运行一个简单的程序二、选择原生Spring方式配置数据源前言 spring数据源的配置网络上有很多例子,这里我也来介绍一下单数据源配...
    99+
    2022-11-12
  • Spring多个数据源配置详解
    前言 在上篇文章讲到了如何配置单数据源,但是在实际场景中,会有需要配置多个数据源的场景,比如说,我们在支付系统中,单笔操作(包含查询、插入、新增)中需要操作主库,在批量查询或者对账单...
    99+
    2022-11-12
  • Spring配置数据源流程与作用详解
    目录一、数据源的作用二、数据源手动创建1、数据源的开发步骤2、手动创建c3p0数据源3、手动创建druid数据源4、通过properties配置文件创建连接池5、通过spring配置...
    99+
    2022-11-13
  • 详解基于Spring Boot与Spring Data JPA的多数据源配置
    由于项目需要,最近研究了一下基于spring Boot与Spring Data JPA的多数据源配置问题。以下是传统的单数据源配置代码。这里使用的是Spring的Annotation在代码内部直接配置的方式,没有使用任何XML文件。@Con...
    99+
    2023-05-31
    spring boot 多数据源
  • 详解Spring Security 简单配置
    开发环境 maven idea jdk 1.8 tomcat 8配置spring mvc + spring securitypom.xml <properties> <spring.version>4.3....
    99+
    2023-05-31
    spring security 配置
  • spring+mybatis多数据源的配置
    解决方案:多套sqlSessionFactory,针对不同的数据源数据源Xml代码  <something-else-entirely>   &...
    99+
    2022-10-18
  • 详解Spring Boot整合Mybatis实现 Druid多数据源配置
    一、多数据源的应用场景目前,业界流行的数据操作框架是 Mybatis,那 Druid 是什么呢?Druid 是 Java 的数据库连接池组件。Druid 能够提供强大的监控和扩展功能。比如可以监控 SQL ,在监控业务可以查询慢查询 SQL...
    99+
    2023-05-31
    spring 多数据源 spring boo
  • Spring配置类源码分析详解
    目录spring配置类解析源码解析配置类解析源码分析判断配置类解析配置类配置类的处理总结扩展点spring配置类解析源码解析 上一篇分析spring的启动过程中,会把BeanDefi...
    99+
    2022-11-13
  • Spring boot 数据源未配置异常的解决
    Spring boot 数据源未配置异常 问题 在使Springboot自动生成的项目框架时如果选择了数据源,比如选择了mysql,生成项目之后,启动会报一下异常: Descrip...
    99+
    2022-11-12
  • spring注解@PropertySource配置数据源全流程
    目录@PropertySource数据源配置使用xml配置数据源使用javaBean配置数据源@value注解读取配置@PropertySource注解读取配置注解的spring多数...
    99+
    2022-11-13
  • spring注解中@PropertySource如何配置数据源
    小编给大家分享一下spring注解中@PropertySource如何配置数据源,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!@PropertySource数据源配置一般在配置数据源是都会使用xml的方式注入,key-va...
    99+
    2023-06-29
  • 如何在Spring框架中配置 jndi数据源方法详解
    本篇文章为大家展示了如何在Spring框架中配置 jndi数据源方法详解,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。xml配置:<bean id="dataSource&...
    99+
    2023-05-31
    spring jndi 数据源
  • spring mvc配置 + dbcp数据源+jdbcTemplate
    最近打算仔细研究一下spring,就从用了2年的spring mvc开始吧,初学者可以看看,大神就pass好了,呵呵....首先去spring官网下载完整的spring包,包含libs, docs和sche...
    99+
    2022-10-18
  • 解决spring boot 1.5.4 配置多数据源的问题
    spring boot 已经支持多数据源配置了,无需网上好多那些编写什么类的,特别麻烦,看看如下解决方案,官方的,放心!1.首先定义数据源配置#=====================multiple database config===...
    99+
    2023-05-31
    springboot 多数据源 配置
  • Presto支持Elasticsearch数据源配置详解
    目录正文数据源配置数据表配置数据测试正文 强烈建议使用Elasticsearch 6.0.0或更高版本 在实际工作中我们使用到elasticsearch的场景也很多,为了方便我们统...
    99+
    2022-12-08
    Presto Elasticsearch数据源配置 Presto Elasticsearch
  • 详解SpringBoot和Mybatis配置多数据源
    目前业界操作数据库的框架一般是 Mybatis,但在很多业务场景下,我们需要在一个工程里配置多个数据源来实现业务逻辑。在SpringBoot中也可以实现多数据源并配合Mybatis框架编写xml文件来执行SQL。在SpringBoot中,配...
    99+
    2023-05-31
    springboot mybatis 多数据源
  • 【Java】Spring Boot配置动态数据源
    SpringBoot配置动态数据源 一、动态多数据源的配置 1.1 创建动态数据源 通过实现Spring提供的AbstractRoutingDataSource类,可以实现自己的数据源选择逻辑,从而可...
    99+
    2023-09-15
    java spring boot 开发语言
  • spring怎么配置两个数据源
    在Spring中配置两个数据源需要进行以下步骤:1. 添加两个数据源的配置文件(比如datasource1.properties和d...
    99+
    2023-10-18
    spring
  • Java Spring详解如何配置数据源注解开发以及整合Junit
    目录Spring数据源的配置数据源(连接池)的作用数据源的开发步骤手动创建数据源Spring注解开发Spring原始注解Spring新注解Spring整合JunitSpring集成J...
    99+
    2022-11-12
  • 如何解决Spring boot数据源未配置异常
    本篇内容主要讲解“如何解决Spring boot数据源未配置异常”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何解决Spring boot数据源未配置异常”吧!Spring boot 数据源未...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作