`
weiqingfei
  • 浏览: 315379 次
  • 性别: Icon_minigender_1
  • 来自: 黑洞
社区版块
存档分类
最新评论

Spring boot里datasource的配置

    博客分类:
  • Java
阅读更多

spring boot里,在包spring-boot-autoconfigure里有个datasource自动配置类

写道
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

 在配置文件application.properties里,配置了spring.datasource.*后,将自动配置datasource

	@Conditional(DataSourceAutoConfiguration.NonEmbeddedDataSourceCondition.class)
	@ConditionalOnMissingBean({ DataSource.class, XADataSource.class })
	protected static class NonEmbeddedConfiguration {

		@Autowired
		private DataSourceProperties properties;

		@Bean
		@ConfigurationProperties(prefix = DataSourceProperties.PREFIX)
		public DataSource dataSource() {
			DataSourceBuilder factory = DataSourceBuilder
					.create(this.properties.getClassLoader())
					.driverClassName(this.properties.getDriverClassName())
					.url(this.properties.getUrl()).username(this.properties.getUsername())
					.password(this.properties.getPassword());
			if (this.properties.getType() != null) {
				factory.type(this.properties.getType());
			}
			return factory.build();
		}

	}

 但这里有个条件

@Conditional(DataSourceAutoConfiguration.NonEmbeddedDataSourceCondition.class)

 意思是说,只有存在非嵌入DataSource时才会配置,判定的条件其实是写在DataSourceBuilder里的

	private static final String[] DATA_SOURCE_TYPE_NAMES = new String[] {
			"org.apache.tomcat.jdbc.pool.DataSource",
			"com.zaxxer.hikari.HikariDataSource",
			"org.apache.commons.dbcp.BasicDataSource",
			"org.apache.commons.dbcp2.BasicDataSource" };

 也就是说,系统里必须存在上面列举的这些类才可以。

 

所以如果你在application.properties里配置了spring.datasource.*有关信息后,发现没有datasource的bean,那就说明你可以忘记添加上面这些包了。

 

虽然spring boot为我们做了很多事情,但是看起来都是偷偷摸摸的,如果对于内部的实现不了解,就可能遇到有时有效,有时无效的情况。

为了安心,也可以自己指定这些配置。

@Configuration
public class DbConfiguration implements TransactionManagementConfigurer {
	
	@Autowired
	private DataSourceProperties properties;
	
	@Bean
	public DataSource dataSource() {
		DataSourceBuilder factory = DataSourceBuilder
				.create(this.properties.getClassLoader())
				.driverClassName(this.properties.getDriverClassName())
				.url(this.properties.getUrl()).username(this.properties.getUsername())
				.password(this.properties.getPassword());
		if (this.properties.getType() != null) {
			factory.type(this.properties.getType());
		}
		return factory.build();
	}

    @Bean
    public PlatformTransactionManager txManager() {
        return new DataSourceTransactionManager(dataSource());
    }

	@Override
	public PlatformTransactionManager annotationDrivenTransactionManager() {
		return txManager();
	}

}

 这儿实现了interface:TransactionManagementConfigurer,当有多个事务管理器时,这儿指定默认的用注解声明的事务管理器,比如用Transactional,并未指定transactionManager时。

application.properties

写道
spring.datasource.url=jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=username
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource

 当然,你可以不使用DataSourceBuilder,而是直接创建DataSource。

分享到:
评论

相关推荐

    Spring boot连接oracle数据库JDBC配置步骤

    Spring Boot 连接 Oracle 数据库 JDBC 配置步骤 在本文中,我们将详细介绍如何使用 Spring Boot 连接 Oracle 数据库,配置 JDBC 驱动程序,并实现数据库的基本操作。 Step 1: 添加依赖项 在 Spring Boot 项目中,...

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

    在Spring Boot中,我们可以通过创建不同的`DataSource` bean来配置多个数据源。每个数据源通常会有一个对应的`JdbcTemplate`或`JpaEntityManagerFactory`。首先,我们需要在`application.yml`或`application....

    spring boot多数据源配置

    在Spring Boot应用中,多数据源配置是一项关键的技术,它允许我们同时管理多个数据库,比如主库和从库,或者不同类型的数据库。本教程将详细阐述如何在Spring Boot项目中实现这一功能,从数据源配置、实体管理到...

    dynamic-datasource-spring-boot-starter-3.4.1-API文档-中英对照版.zip

    赠送jar包:dynamic-datasource-spring-boot-starter-3.4.1.jar; 赠送原API文档:dynamic-datasource-spring-boot-starter-3.4.1-javadoc.jar; 赠送源代码:dynamic-datasource-spring-boot-starter-3.4.1-sources...

    Spring-Boot-Demo

    在Spring Boot项目中,我们不再需要手动编写大量的XML配置文件,而是通过自动配置类和starter模块来简化配置。对于Mybatis的整合,我们可以引入`spring-boot-starter-mybatis`依赖,这个starter模块已经包含了...

    spring中dataSource的配置以及配合IOC的使用

    只需要在`application.properties`或`application.yml`中设置相关属性,Spring Boot就会自动配置并创建`DataSource`。 ```properties spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource....

    dynamic-datasource-spring-boot-starter-3.4.1-API文档-中文版.zip

    赠送jar包:dynamic-datasource-spring-boot-starter-3.4.1.jar; 赠送原API文档:dynamic-datasource-spring-boot-starter-3.4.1-javadoc.jar; 赠送源代码:dynamic-datasource-spring-boot-starter-3.4.1-sources...

    从零开始学Spring Boot

    1.8 Spring Boot datasource - mysql 1.9 JPA - Hibernate 1.10 使用JPA保存数据 1.11 使用JdbcTemplate 1.12 Spring Boot修改端口号 1.13 Spring Boot配置ContextPath 1.14 Spring Boot改变JDK编译版本 1.15 处理...

    Spring Boot多数据源(JdbcTemplate)配置与使用

    在本教程中,我们将深入探讨如何在Spring Boot项目中配置和使用多数据源以及JdbcTemplate。 首先,让我们了解什么是`JdbcTemplate`。它是Spring提供的一种模板类,用于执行SQL语句,通过回调机制将结果转换为Java...

    dynamic-datasource-spring-boot-starter_多数据源_

    `dynamic-datasource-spring-boot-starter`通过自动化配置和扩展点设计,使得开发者能够在不修改代码的情况下,轻松地在多个数据源之间切换。 **Spring Boot**是Spring框架的一个衍生项目,旨在简化Spring应用程序...

    spring boot 例子代码

    例如,如果我们在项目中添加了 `spring-boot-starter-data-jpa`,那么 Spring Boot 就会自动配置好 JPA 相关的组件,如 EntityManager 和 DataSource。 其次,内嵌式 web 服务器允许我们无需额外部署到外部服务器...

    SpringBoot框架Datasource注入

    Spring Boot的自动配置机制(Auto Configuration)会在启动时寻找合适的`DataSource`实现,并根据`application.properties`或`application.yml`文件中的配置自动配置`DataSource`。例如,如果我们希望使用HikariCP...

    spring boot入门教程

    1. **减少配置**:Spring Boot 最大的优点之一就是减少了大量的 XML 配置文件,通过注解和自动配置机制来简化配置。 2. **便捷的项目创建**:Spring Boot 提供了一个名为 Spring Initializr 的工具,可以非常简便地...

    Spring Boot 实战 译者 丁雪丰

    例如,如果项目包含了JDBC的依赖,Spring Boot就会自动配置DataSource,使得数据库连接变得更加方便。此外,Spring Boot还提供了大量的 starter,如`spring-boot-starter-web`,只需简单引入依赖,就能快速搭建一个...

    spring boot dynamic dataspurce

    总之,Spring Boot Dynamic DataSource是Spring Boot中处理多数据源问题的有效解决方案,它使开发者能够灵活地根据业务需求切换和管理数据源,提高了系统的可配置性和可靠性。在实际开发中,理解并熟练掌握这一特性...

    Spring Boot如何使用HikariCP连接池详解

    在现代Java开发中,Spring Boot框架以其简洁性和自动化配置受到广泛欢迎。Spring Boot 2.x版本默认采用HikariCP作为其数据连接池,因为HikariCP以其高效和高性能著称。HikariCP通过使用Javassist库进行字节码操作,...

    Spring Boot中整合MyBatis

    Spring Boot通过`@EnableJpaRepositories`注解自动配置了数据源,但如果我们需要配置多个数据源,可以创建自定义的`DataSource` bean。例如,创建两个数据源`primaryDataSource`和`secondaryDataSource`: ```java...

    spring boot入门

    Spring 4.x 和 Spring Boot 都推荐使用 Java 配置的方式。 #### 二、Spring 的 Java 配置方式详解 Spring 的 Java 配置方式主要依赖于两个关键注解:`@Configuration` 和 `@Bean`。 - **@Configuration**:这个...

    Spring Boot Demo

    Spring Boot是由Pivotal团队提供的全新框架,其设计目标是简化Spring应用的初始搭建以及开发过程,它集成了大量常用的第三方库配置,如数据源、JDBC、ORM、邮件服务等,使得开发者可以“零配置”地快速开发应用程序...

    Spring Boot入门培训(带完整源码)

    例如,如果你在项目中引入了JDBC的依赖,Spring Boot会自动配置DataSource,使得你可以立即进行数据库操作。 另一个关键点是起步依赖(Starter POMs)。这些是Spring Boot提供的特殊Maven或Gradle依赖,它们包含了...

Global site tag (gtag.js) - Google Analytics