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。
相关推荐
Spring Boot 连接 Oracle 数据库 JDBC 配置步骤 在本文中,我们将详细介绍如何使用 Spring Boot 连接 Oracle 数据库,配置 JDBC 驱动程序,并实现数据库的基本操作。 Step 1: 添加依赖项 在 Spring Boot 项目中,...
在Spring Boot中,我们可以通过创建不同的`DataSource` bean来配置多个数据源。每个数据源通常会有一个对应的`JdbcTemplate`或`JpaEntityManagerFactory`。首先,我们需要在`application.yml`或`application....
在Spring Boot应用中,多数据源配置是一项关键的技术,它允许我们同时管理多个数据库,比如主库和从库,或者不同类型的数据库。本教程将详细阐述如何在Spring Boot项目中实现这一功能,从数据源配置、实体管理到...
赠送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项目中配置和使用多数据源以及JdbcTemplate。 首先,让我们了解什么是`JdbcTemplate`。它是Spring提供的一种模板类,用于执行SQL语句,通过回调机制将结果转换为Java...
在Spring Boot项目中,我们不再需要手动编写大量的XML配置文件,而是通过自动配置类和starter模块来简化配置。对于Mybatis的整合,我们可以引入`spring-boot-starter-mybatis`依赖,这个starter模块已经包含了...
只需要在`application.properties`或`application.yml`中设置相关属性,Spring Boot就会自动配置并创建`DataSource`。 ```properties spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.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...
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 处理...
`dynamic-datasource-spring-boot-starter`通过自动化配置和扩展点设计,使得开发者能够在不修改代码的情况下,轻松地在多个数据源之间切换。 **Spring Boot**是Spring框架的一个衍生项目,旨在简化Spring应用程序...
Spring Boot的自动配置机制(Auto Configuration)会在启动时寻找合适的`DataSource`实现,并根据`application.properties`或`application.yml`文件中的配置自动配置`DataSource`。例如,如果我们希望使用HikariCP...
例如,如果我们在项目中添加了 `spring-boot-starter-data-jpa`,那么 Spring Boot 就会自动配置好 JPA 相关的组件,如 EntityManager 和 DataSource。 其次,内嵌式 web 服务器允许我们无需额外部署到外部服务器...
1. **减少配置**:Spring Boot 最大的优点之一就是减少了大量的 XML 配置文件,通过注解和自动配置机制来简化配置。 2. **便捷的项目创建**:Spring Boot 提供了一个名为 Spring Initializr 的工具,可以非常简便地...
例如,如果项目包含了JDBC的依赖,Spring Boot就会自动配置DataSource,使得数据库连接变得更加方便。此外,Spring Boot还提供了大量的 starter,如`spring-boot-starter-web`,只需简单引入依赖,就能快速搭建一个...
总之,Spring Boot Dynamic DataSource是Spring Boot中处理多数据源问题的有效解决方案,它使开发者能够灵活地根据业务需求切换和管理数据源,提高了系统的可配置性和可靠性。在实际开发中,理解并熟练掌握这一特性...
Spring Boot通过`@EnableJpaRepositories`注解自动配置了数据源,但如果我们需要配置多个数据源,可以创建自定义的`DataSource` bean。例如,创建两个数据源`primaryDataSource`和`secondaryDataSource`: ```java...
Spring 4.x 和 Spring Boot 都推荐使用 Java 配置的方式。 #### 二、Spring 的 Java 配置方式详解 Spring 的 Java 配置方式主要依赖于两个关键注解:`@Configuration` 和 `@Bean`。 - **@Configuration**:这个...
在现代Java开发中,Spring Boot框架以其简洁性和自动化配置受到广泛欢迎。Spring Boot 2.x版本默认采用HikariCP作为其数据连接池,因为HikariCP以其高效和高性能著称。HikariCP通过使用Javassist库进行字节码操作,...
Spring Boot是由Pivotal团队提供的全新框架,其设计目标是简化Spring应用的初始搭建以及开发过程,它集成了大量常用的第三方库配置,如数据源、JDBC、ORM、邮件服务等,使得开发者可以“零配置”地快速开发应用程序...
例如,如果你在项目中引入了JDBC的依赖,Spring Boot会自动配置DataSource,使得你可以立即进行数据库操作。 另一个关键点是起步依赖(Starter POMs)。这些是Spring Boot提供的特殊Maven或Gradle依赖,它们包含了...