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
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。
相关推荐
赠送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...
赠送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...
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,可同时支持多种数据库,不同数据库,同时支持不同数据库的JdbcTemplate
mybatis-multi-datasource|[mybatis、数据库集群、读写分离、读库负载均衡](https://github.com/smltq/spring-boot-demo/blob/master/mybatis-multi-datasource) template-thymeleaf|[thymeleaf实现应用国际化示例]...
一个springboot的多数据配置,从mapper到controller完整的一个业务流程
dynamic-datasource-spring-boot-starter-3.2.0.jar
Dynamic-Datasource (opens new window)- 基于 SpringBoot 的多数据源组件,功能强悍,支持 Seata 分布式事务。 支持 数据源分组 ,适用于多种场景 纯粹多库 读写分离 一主多从 混合模式。 支持数据库敏感配置信息 ...
多数据源调整和修改,支持数据源的切换等功能
基于maven的spring-boot项目配置多数据源,基于xml配置文件配置多数据源
它提供了管理宿舍里学生信息的功能,并采用了 Spring MVC、MySQL、Maven 和 MyBatis 技术栈。前端方面使用了 jsp、Bootstrap 和 layui 等框架。系统还使用拦截器实现了登录验证和基于 RBAC 模型的权限管理。 技术栈 ...
Spring Boot自动配置以与 增加了拦截和记录sql查询的功能,包括拦截大多数Connection , Statement和ResultSet方法调用 -增加了拦截所有查询以及Connection , Statement和ResultSet方法调用的功能 添加连接池指标...
Dynamic-Datasource (opens new window)- 基于 SpringBoot 的多数据源组件,功能强悍,支持 Seata 分布式事务。 支持 数据源分组 ,适用于多种场景 纯粹多库 读写分离 一主多从 混合模式。 支持数据库敏感配置信息 ...
配置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 显示使用@RefreshScope和使用 spring-boot 的条件 bean 定义时出现问题的示例。 它是一个基本的应用程序,除了创建一个带有@RefreshScope的自定义 H2 DataSource外,什么都不做...
包括'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-...
项目采用:Spring boot(java config方式配置) + mybatis + 通用mapper + druid 本项目是在https://github.com/abel533/MyBatis-Spring-Boot基础上修改的 注意事项及测试见项目下的README.md 技术学习交流:...
在Spring Boot中,可以使用配置文件来管理应用程序的配置。这些配置文件可以根据不同的环境进行分离和管理,Spring Boot提供了多种灵活的方式来实现多环境配置。 1. 配置文件的命名 默认配置文件:application....
Spring Boot本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序。也就是说,它并不是用来替代Spring的解决方案,而是和Spring框架紧密结合用于提升Spring...
3.数据库使用Mysql中自带的sakila数据库,使用前,请将application.yml中的spring.datasource.ssm.password中的数据库密码设置为自己的; 4.实现了sakila中的单表的增删改查和跨表查询,跨表查询包括了Mybatis的1-N...