SpringBoot DataSource数据源实现自动配置流程详解

下面就给你讲解一下“SpringBoot DataSource数据源实现自动配置流程详解”的完整攻略。

一、DataSource数据源实现自动配置概述

在我们开发一个项目时,需要我们配置数据源,SpringBoot提供了自动配置数据源的功能。SpringBoot对JDBC的封装使得开发人员能够快速地进行数据源配置,通过少量的配置就可以连接到数据库。

二、DataSource数据源自动装配

当我们在SpringBoot项目中引入了jdbc的依赖时,SpringBoot就会自动配置一个默认的DataSource数据源。 下面来详细讲解一下自动配置流程。

2.1 配置文件

我们在application.properties或者application.yml文件中配置我们需要连接的数据库信息,比如:

spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root123
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

2.2 数据源自动配置

当我们在 application.properties或者application.yml 文件中添加了上述数据源配置后,SpringBoot会自动为我们创建一个DataSource数据源。这些数据源被添加到了环境上下文(ApplicationContext)中:

@Configuration(proxyBeanMethods = false)
@ConditionalOnClass({ DataSource.class, JdbcTemplate.class })
@ConditionalOnProperty(name = "spring.datasource.type")
@AutoConfigureAfter({ DataSourcePoolMetadataProvidersConfiguration.class,
        HibernateJpaAutoConfiguration.class })
public class DataSourceAutoConfiguration {
... ... ...

这是一个自动配置类,这个类使用了@Configuration注解表示这是一个@Configuration配置类
@ConditionalOnClass表示当DataSource和JdbcTemplate在类路径下时,这个配置类才会生效。
@AutoConfigureAfter表示在DataSourcePoolMetadataProvidersConfiguration和HibernateJpaAutoConfiguration类后再进行自动配置。

通过上述注解,我们就能够知道当我们引入了JDBC的依赖之后,SpringBoot就会自动生成一个默认的DataSource数据源。

三、代码示例

3.1 Maven依赖

在项目中,我们需要引入以下Maven依赖

<!-- SpringBoot JDBC依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

<!-- MySQL连接器依赖 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

3.2 配置文件

在application.properties或者application.yml文件中添加以下内容,替换username、password、url为你需要连接的数据库信息。

# MySQL配置
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root123

3.3 实体类

我们需要先定义一个实体类,如下:

public class Person {

    private Long id;

    private String name;

    private Integer age;
    //省略getter setter
}

3.4 数据库表的定义

创建一个person表

CREATE TABLE person (
    id BIGINT(20) NOT NULL AUTO_INCREMENT,
    name VARCHAR(20) NOT NULL,
    age INT(11) NOT NULL,
    PRIMARY KEY (id)
);

3.5 数据库CRUD操作

定义一个PersonDao类,并在类中注入JdbcTemplate。

@Repository
public class PersonDao {

    private final JdbcTemplate jdbcTemplate;

    @Autowired //构造方法注入
    public PersonDao(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

    //新增一条person记录
    public void insert(Person person) {
        jdbcTemplate.update("INSERT INTO person(name, age) VALUES (?, ?)",
                person.getName(), person.getAge());
    }

    //根据id更新person记录
    public void updateById(Long id, Person person) {
        jdbcTemplate.update("UPDATE person SET name = ?, age = ? WHERE id = ?",
                person.getName(), person.getAge(), id);
    }

    //根据id删除person记录
    public void deleteById(Long id) {
        jdbcTemplate.update("DELETE FROM person WHERE id = ?", id);
    }

    //查询所有person记录
    public List<Person> findAll() {
        return jdbcTemplate.query("SELECT id, name, age FROM person",
                (rs, rowNum) ->
                        new Person(
                                rs.getLong("id"),
                                rs.getString("name"),
                                rs.getInt("age")
                        )
        );
    }

    //根据id查询person记录
    public Person findById(Long id) {
        return jdbcTemplate.queryForObject("SELECT id, name, age FROM person WHERE id = ?",
                new Object[]{id},
                (rs, rowNum) ->
                        new Person(
                                rs.getLong("id"),
                                rs.getString("name"),
                                rs.getInt("age")
                        )
        );
    }
}

通过上面的操作,我们就可以完成对Person实体类进行数据库的CRUD操作了。

四、总结

本文简单介绍了SpringBoot DataSource数据源实现自动配置流程,通过对相关代码示例的介绍,希望能够帮助大家更好地理解SpringBoot 的数据源自动配置机制。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot DataSource数据源实现自动配置流程详解 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • MyBatis几种不同类型传参的方式总结

    Sure! MyBatis几种不同类型传参的方式总结 在MyBatis中,传参是非常重要的一部分。正确的传递参数对于正确的执行SQL语句非常关键。本文将介绍MyBatis的不同传参方式及其使用示例。 1. 基本参数类型 基本参数类型指的是Java中的简单数据类型,如int、String、float等,也包括其相应的包装类型。在Mapper文件中,可以直接使用…

    Java 2023年5月20日
    00
  • SpringBoot配置类编写过程图解

    针对SpringBoot配置类的编写过程,我为你提供以下完整攻略。 准备工作 在开始编写SpringBoot配置类之前,我们需要先准备好以下工作: 确认需要配置的属性或类 寻找合适的配置位置,一般是在application.yml或application.properties文件中 编写配置类 编写配置类 在准备好以上工作之后,我们就可以开始编写Spring…

    Java 2023年5月15日
    00
  • 创建一个空的IBM DB2 ECO数据库的方法

    创建一个空的 IBM DB2 ECO 数据库需要按照以下步骤进行: 步骤一:打开 IBM DB2 数据库控制台 首先需要在 IBM DB2 数据库控制台中打开一个空的命令行窗口。在控制台菜单栏选择“工具”->“命令行窗口”,或者使用快捷键“Alt+F2”打开空的命令行窗口。 步骤二:连接到 IBM DB2 数据库实例 在打开的命令行窗口中输入以下命令,…

    Java 2023年6月15日
    00
  • java构造函数示例(构造方法)

    下面我来详细讲解一下“Java构造函数示例(构造方法)”的完整攻略。 1. 构造函数简介 构造函数是一种特殊的方法,用于创建并初始化对象。它的特殊之处在于:在创建对象时会自动调用构造函数进行初始化操作,通常用于给对象的属性进行赋值。 2. 构造函数的定义和使用 构造函数的定义格式与普通方法相似,但是没有返回值类型,也没有void关键字。下面是构造函数的示例代…

    Java 2023年5月20日
    00
  • java实现学生选课系统

    Java实现学生选课系统攻略 系统功能要求 学生登录、退出登录 查看所有课程列表 查询某门课程的详细信息 选课或退课 查看已选课程列表 数据库设计 选课系统的数据模型可以包含以下几个实体: 学生 课程 选课记录 可以使用MySQL作为数据库实现。下面是数据库表的设计: 表名 字段名 类型 约束 students id int 主键,自增长 username …

    Java 2023年5月19日
    00
  • java多线程实现取款小程序

    下面是针对Java多线程实现取款小程序的完整攻略。 准备工作 在开始之前,我们需要先了解一些Java多线程方面的基础知识,如线程创建与启动、线程同步、线程通信等。这些知识我们可以通过阅读相关的书籍或者在线教程来学习掌握。 实现步骤 创建一个银行账户类,包括账户余额、账户号码等属性,以及存、取款等方法。 public class Account { priva…

    Java 2023年5月18日
    00
  • SpringMvc @Valid如何抛出拦截异常

    Spring MVC 中的 @Valid 注解可以用来验证提交的数据是否满足指定的规则和条件,但是如果数据不符,则需要抛出异常给前端。 下面是使用 @Valid 注解实现异常拦截的步骤: 在 Controller 的方法参数中添加注解 @Valid 和 BindingResult 对象。 编写数据验证规则,通常是在数据实体类中使用注解编写。 在 Contro…

    Java 2023年5月27日
    00
  • jQuery ajaxForm()的应用

    当需要通过 AJAX 方式向服务器提交表单数据时,jQuery 提供了方便的方法 ajaxForm()。下面是该方法的详细介绍及应用攻略。 ajaxForm() 方法的使用 基本语法 $(selector).ajaxForm(options); 其中,selector 是表单的选择器,options 是一个对象,包含了一些可选参数及回调函数,具体参数如下: …

    Java 2023年6月16日
    00
合作推广
合作推广
分享本页
返回顶部