`
weiqingfei
  • 浏览: 311757 次
  • 性别: 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。

分享到:
评论

相关推荐

    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...

    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+Jpa多数据源配置Demo(支持不同数据库)

    Spring Boot+Jpa多数据源配置Demo,可同时支持多种数据库,不同数据库,同时支持不同数据库的JdbcTemplate

    spring-boot示例项目

    mybatis-multi-datasource|[mybatis、数据库集群、读写分离、读库负载均衡](https://github.com/smltq/spring-boot-demo/blob/master/mybatis-multi-datasource) template-thymeleaf|[thymeleaf实现应用国际化示例]...

    spring boot多数据源配置

    一个springboot的多数据配置,从mapper到controller完整的一个业务流程

    dynamic-datasource-spring-boot-starter-3.2.0.jar

    dynamic-datasource-spring-boot-starter-3.2.0.jar

    dynamic-datasource-spring-boot-starter-v3.5.1.zip

    Dynamic-Datasource (opens new window)- 基于 SpringBoot 的多数据源组件,功能强悍,支持 Seata 分布式事务。 支持 数据源分组 ,适用于多种场景 纯粹多库 读写分离 一主多从 混合模式。 支持数据库敏感配置信息 ...

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

    多数据源调整和修改,支持数据源的切换等功能

    Spring-boot项目多数据源配置

    基于maven的spring-boot项目配置多数据源,基于xml配置文件配置多数据源

    基于 Spring Boot +mysql的学生宿舍管理系统源代码+数据库

    它提供了管理宿舍里学生信息的功能,并采用了 Spring MVC、MySQL、Maven 和 MyBatis 技术栈。前端方面使用了 jsp、Bootstrap 和 layui 等框架。系统还使用拦截器实现了登录验证和基于 RBAC 模型的权限管理。 技术栈 ...

    spring-boot-data-source-decorator:与p6spy,datasource-proxy,flexy-pool和spring-cloud-sleuth集成的Spring Boot

    Spring Boot自动配置以与 增加了拦截和记录sql查询的功能,包括拦截大多数Connection , Statement和ResultSet方法调用 -增加了拦截所有查询以及Connection , Statement和ResultSet方法调用的功能 添加连接池指标...

    dynamic-datasource-spring-boot-starter-v3.5.1.tar.gz

    Dynamic-Datasource (opens new window)- 基于 SpringBoot 的多数据源组件,功能强悍,支持 Seata 分布式事务。 支持 数据源分组 ,适用于多种场景 纯粹多库 读写分离 一主多从 混合模式。 支持数据库敏感配置信息 ...

    Spring Boot中文文档.rar

    配置DataSource 30.1.1.嵌入式数据库支持 30.1.2.连接到生产数据库 30.1.3.连接到JNDI数据源 30.2.使用JdbcTemplate 30.3.JPA和Spring Data JPA 30.3.1.实体类 30.3.2.Spring数据JPA存储库 ...

    spring-boot-config-datasource-test

    spring-boot-config-datasource-test 显示使用@RefreshScope和使用 spring-boot 的条件 bean 定义时出现问题的示例。 它是一个基本的应用程序,除了创建一个带有@RefreshScope的自定义 H2 DataSource外,什么都不做...

    spring-boot很多实例

    包括'chapter-2-spring-boot-quick-start','chapter-4-spring-boot-validating-form-input','chapter-5-spring-boot-paging-sorting','doc','springboot-configuration','springboot-dubbo-client','springboot-...

    mybatis多数据源,基于springboot mybatis druid

    项目采用:Spring boot(java config方式配置) + mybatis + 通用mapper + druid 本项目是在https://github.com/abel533/MyBatis-Spring-Boot基础上修改的 注意事项及测试见项目下的README.md 技术学习交流:...

    Java课程实验 Spring Boo 配置文件以及 Profile 多环境配置

    在Spring Boot中,可以使用配置文件来管理应用程序的配置。这些配置文件可以根据不同的环境进行分离和管理,Spring Boot提供了多种灵活的方式来实现多环境配置。 1. 配置文件的命名 默认配置文件:application....

    spring-boot-master.rar

    Spring Boot本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序。也就是说,它并不是用来替代Spring的解决方案,而是和Spring框架紧密结合用于提升Spring...

    Spring boot整合Mybatis实现增删改查

    3.数据库使用Mysql中自带的sakila数据库,使用前,请将application.yml中的spring.datasource.ssm.password中的数据库密码设置为自己的; 4.实现了sakila中的单表的增删改查和跨表查询,跨表查询包括了Mybatis的1-N...

Global site tag (gtag.js) - Google Analytics