Spring Boot DataSourceBuilder 教程

365bet体育在线直播 2025-10-07 01:06:14 admin 访问量: 3017 评分: 692
Spring Boot DataSourceBuilder 教程

Spring Boot DataSourceBuilder 教程展示了如何使用 DataSourceBuilder 在命令行 Spring Boot 应用中创建数据源。 使用了 HikariCP 连接池。

DataSourceBuilder 是 Java 便利类,用于创建具有常见实现和属性的数据源。

H2 是完全用 Java 创建的开源关系数据库管理系统。 它可以嵌入 Java 应用中或以客户端-服务器模式运行。 它易于部署和安装,占地面积小。

Spring 是用于开发 Java 企业应用的 Java 应用框架。 它还有助于集成各种企业组件。 Spring Boot 使创建具有 Spring 动力的生产级应用和服务变得很容易,而对安装的要求却最低。

Spring Boot DataSourceBuilder 示例

以下是一个简单的 Spring Boot 控制台应用。 它从 H2 内存数据库中检索数据并将其显示在终端中。 要配置数据源,我们使用DataSourceBuilder类。

pom.xml

src

├───main

│ ├───java

│ │ └───com

│ │ └───zetcode

│ │ │ Application.java

│ │ │ MyRunner.java

│ │ ├───config

│ │ │ AppConfig.java

│ │ └───model

│ │ Car.java

│ └───resources

│ application.yaml

│ data-h2.sql

│ logback.xml

│ schema-h2.sql

└───test

└───java

这是项目结构。

pom.xml

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0

http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.zetcode

datasourcebuilder

1.0-SNAPSHOT

jar

UTF-8

11

11

org.springframework.boot

spring-boot-starter-parent

2.1.1.RELEASE

com.h2database

h2

runtime

org.springframework.boot

spring-boot-starter-jdbc

org.springframework.boot

spring-boot-maven-plugin

Maven pom.xml我们声明必要的依赖关系。

com/zetcode/model/Car.java

package com.zetcode.model;

import java.util.Objects;

public class Car {

private Long id;

private String name;

private int price;

public Car() {}

public Car(Long id, String name, int price) {

this.id = id;

this.name = name;

this.price = price;

}

public Long getId() {

return id;

}

public void setId(Long id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getPrice() {

return price;

}

public void setPrice(int price) {

this.price = price;

}

@Override

public boolean equals(Object o) {

if (this == o) return true;

if (o == null || getClass() != o.getClass()) return false;

Car car = (Car) o;

return price == car.price &&

Objects.equals(id, car.id) &&

Objects.equals(name, car.name);

}

@Override

public int hashCode() {

return Objects.hash(id, name, price);

}

@Override

public String toString() {

final StringBuilder sb = new StringBuilder("Car{");

sb.append("id=").append(id);

sb.append(", name='").append(name).append('\'');

sb.append(", price=").append(price);

sb.append('}');

return sb.toString();

}

}

这是Car bean 类。 它包含商品 ID,名称和价格。

resources/schema-h2.sql

CREATE TABLE cars(id INT PRIMARY KEY AUTO_INCREMENT,

name VARCHAR(255), price INT);

该 SQL 脚本创建cars表。

resources/data-h2.sql

INSERT INTO cars(name, price) VALUES('Audi', 52642);

INSERT INTO cars(name, price) VALUES('Mercedes', 57127);

INSERT INTO cars(name, price) VALUES('Skoda', 9000);

INSERT INTO cars(name, price) VALUES('Volvo', 29000);

INSERT INTO cars(name, price) VALUES('Bentley', 350000);

INSERT INTO cars(name, price) VALUES('Citroen', 21000);

INSERT INTO cars(name, price) VALUES('Hummer', 41400);

INSERT INTO cars(name, price) VALUES('Volkswagen', 21600);

该脚本用数据填充表。 这两个脚本都位于类路径的根目录中。

resources/logback.xml

在logback.xml文件中,我们配置日志记录级别。 我们将 Spring 框架的日志记录级别设置为ERROR,以便我们的输出不会被不必要的细节所困扰。

resources/application.yml

datasource:

hikari:

minimum-idle: 1

maximum-pool-size: 20

jdbcUrl: jdbc:h2:mem:testdb;DB_CLOSE_ON_EXIT=FALSE

driverClassName: org.h2.Driver

spring:

main:

banner-mode: "off"

datasource:

platform: h2

Spring Boot 的主要配置文件称为application.yml。 在datasource属性中,我们配置数据源和 HikariCP。 我们使用内存中的 H2 数据库。

使用 banner-mode 属性,我们关闭 Spring Boot 横幅。 该平台值用在 SQL 初始化脚本中:schema-${platform}.sql和data-${platform}.sql。

com/zetcode/config/AppConfig.java

package com.zetcode.config;

import org.springframework.boot.context.properties.ConfigurationProperties;

import org.springframework.boot.jdbc.DataSourceBuilder;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.context.annotation.Primary;

import javax.sql.DataSource;

@Configuration

public class AppConfig {

@Bean

@Primary

@ConfigurationProperties(prefix = "datasource")

public DataSource dataSource() {

return DataSourceBuilder.create().build();

}

}

在AppConfig中生成一个数据源。 使用@ConfigurationProperties注解,我们已将配置外部化到 YAML 文件中。

com/zetcode/MyRunner.java

package com.zetcode;

import com.zetcode.model.Car;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.boot.CommandLineRunner;

import org.springframework.jdbc.core.BeanPropertyRowMapper;

import org.springframework.jdbc.core.JdbcTemplate;

import org.springframework.stereotype.Component;

@Component

public class MyRunner implements CommandLineRunner {

@Autowired

private JdbcTemplate jdbcTemplate;

@Override

public void run(String... args) {

var sql = "SELECT * FROM cars";

var cars = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(Car.class));

for (Car car: cars) {

System.out.println(car);

}

}

}

MyRunner执行 SQL 查询并在控制台中显示输出。

@Autowired

private JdbcTemplate jdbcTemplate;

注入JdbcTemplate。

var sql = "SELECT * FROM cars";

这是要执行的 SQL。 我们从cars表中选择所有汽车。

var cars = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(Car.class));

BeanPropertyRowMapper将一行转换为指定映射目标类的新实例。

for (Car car: cars) {

System.out.println(car);

}

我们遍历所有汽车对象,并将它们打印到控制台。

com/zetcode/Application.java

package com.zetcode;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication

public class Application {

public static void main(String[] args) {

SpringApplication.run(Application.class, args);

}

}

Application设置 Spring Boot 应用。

$ mvn -q spring-boot:run

...

Car{id=1, name='Audi', price=52642}

Car{id=2, name='Mercedes', price=57127}

Car{id=3, name='Skoda', price=9000}

Car{id=4, name='Volvo', price=29000}

Car{id=5, name='Bentley', price=350000}

Car{id=6, name='Citroen', price=21000}

Car{id=7, name='Hummer', price=41400}

Car{id=8, name='Volkswagen', price=21600}

...

我们运行 Spring Boot 应用。 显示八辆车。

在本教程中,我们在 Spring Boot 控制台应用中使用了 DataSourceBuilder。

相关数据

十款免费的整点报时软件推荐
365bet体育在线直播

十款免费的整点报时软件推荐

07-10 ↗ 2209
墨西哥国家女子足球队
365bet体育在线直播

墨西哥国家女子足球队

08-14 ↗ 6567
綵字组词,包含綵字的词语
365BET

綵字组词,包含綵字的词语

08-19 ↗ 8249
2015世界女子高尔夫锦标赛海口观澜湖落幕
365bet体育在线直播

2015世界女子高尔夫锦标赛海口观澜湖落幕

09-07 ↗ 7810
新天龙八部回坑指南 新区起号还是老区空降
365bet体育在线直播

新天龙八部回坑指南 新区起号还是老区空降

08-08 ↗ 2058