- Spring Boot简介
- Spring Boot快速入门
- Spring Boot引导过程
- Spring Boot Tomcat部署
- Spring Boot构建系统
- Spring Boot代码结构
- Spring Boot Bean和依赖注入
- Spring Boot运行器(Runner)
- Spring Boot应用程序属性
- Spring Boot日志
- Spring Boot构建RESTful Web服务
- Spring Boot异常处理
- Spring Boot拦截器
- Spring Boot Servlet过滤器
- Spring Boot Tomcat端口号
- Spring Boot Rest模板
- Spring Boot文件处理
- Spring Boot服务组件
- Spring Boot Thymeleaf示例
- Spring Boot使用RESTful Web服务
- Spring Boot CORS支持
- Spring Boot国际化
- Spring Boot调度
- Spring Boot启用HTTPS
- Spring Boot Eureka服务器
- Spring Boost Eureka服务注册
- Spring Boot Zuul代理服务器和路由
- Spring Boot云配置服务器
- Spring Boot云配置客户端
- Spring Boot Actuator
- Spring Boot管理服务器
- Spring Boot管理客户端
- Spring Boot启用Swagger2
- Spring Boot创建Docker镜像
- Spring Boot跟踪微服务日志
- Spring Boot Flyway数据库
- Spring Boot发送电子邮件
- Spring Boot Hystrix
- Spring Boot Web Socket
- Spring Boot批量服务
- Spring Boot Apache Kafka
- Spring Boot单元测试用例
- Spring Boot Rest控制器单元测试
- Spring Boot数据库源(连接数据库)
- Spring Boot保护Web应用程序
Spring Boot Flyway数据库
Flyway是一个版本控制应用程序,可以在所有实例中轻松可靠地演变数据库模式。 要了解有关Flyway的更多信息,可以使用链接 - www.flywaydb.org
许多软件项目使用关系数据库。 这需要处理数据库迁移,通常也称为模式迁移。
在本章中,将详细了解如何在Spring Boot应用程序中配置Flyway数据库。
配置Flyway数据库
首先,从Spring Initializer 页面 www.start.spring.io 下载Spring Boot项目并选择以下依赖项 -
- Spring Boot Starter Web
- Flyway
- MySQL
- JDBC
Maven用户可以在pom.xml 文件中添加以下依赖项。
<dependency> <groupId>org.flywaydb</groupId> <artifactId>flyway-core</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>
Gradle用户可以在build.gradle 文件中添加以下依赖项。
compile('org.flywaydb:flyway-core') compile('org.springframework.boot:spring-boot-starter-jdbc') compile('org.springframework.boot:spring-boot-starter-web') compile('mysql:mysql-connector-java')
在应用程序属性中,需要配置数据库属性以创建DataSource
,还要在应用程序属性中配置的flyway
属性。
对于属性文件用户,请在application.properties 文件中添加以下属性。
spring.application.name = flywayapp spring.datasource.driverClassName = com.mysql.jdbc.Driver spring.datasource.url = jdbc:mysql://localhost:3306/USERSERVICE?autoreconnect=true spring.datasource.username = root spring.datasource.password = root spring.datasource.testOnBorrow = true spring.datasource.testWhileIdle = true spring.datasource.timeBetweenEvictionRunsMillis = 60000 spring.datasource.minEvictableIdleTimeMillis = 30000 spring.datasource.validationQuery = SELECT 1 spring.datasource.max-active = 15 spring.datasource.max-idle = 10 spring.datasource.max-wait = 8000 flyway.url = jdbc:mysql://localhost:3306/mysql flyway.schemas = USERSERVICE flyway.user = root flyway.password = root
YAML用户可以在application.yml 文件中添加以下属性。
spring: application: name: flywayapp datasource: driverClassName: com.mysql.jdbc.Driver url: "jdbc:mysql://localhost:3306/USERSERVICE?autoreconnect=true" password: "root" username: "root" testOnBorrow: true testWhileIdle: true timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 30000 validationQuery: SELECT 1 max-active: 15 max-idle: 10 max-wait: 8000 flyway: url: jdbc:mysql://localhost:3306/mysql schemas: USERSERVICE user: "root" password: "root"
现在,在src/main/resources/db/migration 目录下创建一个SQL文件。 将SQL文件命名为V1__Initial.sql
CREATE TABLE USERS (ID INT AUTO_INCREMENT PRIMARY KEY, USERID VARCHAR(45)); INSERT INTO USERS (ID, USERID) VALUES (1, 'zyiz.net');
主 Spring Boot应用程序类文件代码如下 -
package com.zyiz.flywayapp; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class FlywayappApplication { public static void main(String[] args) { SpringApplication.run(FlywayappApplication.class, args); } }
完整的构建配置文件如下所示。
Maven构建文件 - pom.xml 的代码如下:
<?xml version = "1.0" encoding = "UTF-8"?> <project xmlns = "http://maven.apache.org/POM/4.0.0" 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"> <modelVersion>4.0.0</modelVersion> <groupId>com.zyiz</groupId> <artifactId>flywayapp</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>flywayapp</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.flywaydb</groupId> <artifactId>flyway-core</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
Gradle构建文件 – build.gradle
buildscript { ext { springBootVersion = '1.5.9.RELEASE' } repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") } } apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'org.springframework.boot' group = 'com.zyiz' version = '0.0.1-SNAPSHOT' sourceCompatibility = 1.8 repositories { mavenCentral() } dependencies { compile('org.flywaydb:flyway-core') compile('org.springframework.boot:spring-boot-starter-jdbc') compile('org.springframework.boot:spring-boot-starter-web') compile('mysql:mysql-connector-java') testCompile('org.springframework.boot:spring-boot-starter-test') }
可以创建一个可执行的JAR文件,并使用下面给出的Maven或Gradle命令运行Spring Boot应用程序 -
对于Maven,可以使用此处显示的命令 -
mvn clean install
在“BUILD SUCCESS”之后,可以在target
目录下找到JAR文件。
对于Gradle,可以使用此处显示的命令 -
gradle clean build
在“BUILD SUCCESSFUL”之后,可以在build libs
目录下找到JAR文件。
现在,使用以下命令运行JAR文件 -
java –jar <JARFILE>
现在,Tomcat在端口8080上启动,在控制台窗口中,可以看到如此处所示的flyway数据库日志。
pringframework.web.servlet.resource.ResourceHttpRequestHandler] 2018-10-08 21:07:58.525 INFO 16088 --- [ main] o.f.core.internal.util.VersionPrinter : Flyway 3.2.1 by Boxfuse Mon Oct 08 21:07:58 CST 2018 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification. Mon Oct 08 21:07:58 CST 2018 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification. 2018-10-08 21:07:58.825 INFO 16088 --- [ main] o.f.c.i.dbsupport.DbSupportFactory : Database: jdbc:mysql://localhost:3306/mysql (MySQL 5.7) 2018-10-08 21:07:58.860 INFO 16088 --- [ main] o.f.core.internal.command.DbValidate : Validated 1 migration (execution time 00:00.014s) 2018-10-08 21:07:59.150 INFO 16088 --- [ main] o.f.c.i.metadatatable.MetaDataTableImpl : Creating Metadata table: `testdb`.`schema_version` 2018-10-08 21:07:59.987 INFO 16088 --- [ main] o.f.core.internal.command.DbMigrate : Current version of schema `testdb`: << Empty Schema >> 2018-10-08 21:07:59.988 INFO 16088 --- [ main] o.f.core.internal.command.DbMigrate : Migrating schema `testdb` to version 1 - Initial 2018-10-08 21:08:00.092 INFO 16088 --- [ main] o.f.core.internal.command.DbMigrate : Successfully applied 1 migration to schema `testdb` (execution time 00:00.947s). 2018-10-08 21:08:00.339 INFO 16088 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup 2018-10-08 21:08:00.515 INFO 16088 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http) 2018-10-08 21:08:00.526 INFO 16088 --- [ main] c.zyiz.flywayapp.FlywayappApplication : Started FlywayappApplication in 6.384 seconds (JVM running for 6.903) 2018-10-08 21:08:20.802 INFO 16088 --- [ Thread-3] ationConfigEmbeddedWebApplicationContext : Closing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@14514713: startup date [Mon Oct 08 21:07:54 CST 2018]; root of context hierarchy 2018-10-08 21:08:20.810 INFO 16088 --- [ Thread-3] o.s.j.e.a.AnnotationMBeanExporter : Unregistering JMX-exposed beans on shutdown
现在连接到数据库并执行选择查询。结果如下所示 -
- Java教程
- Vim教程
- Swing教程
- Spring教程
- Spring Web Services教程
- Spring MVC教程
- Spring JDBC教程
- Spring Cloud教程
- Spring Boot教程
- Spring Boot CLI教程
- Spring Batch教程
- Spring AOP教程
- PDFBox教程
- JSP教程
- JSF教程
- JPA教程
- Java面向对象设计
- Java设计模式
- Java虚拟机教程
- Java泛型教程
- Java正则表达式教程
- Java数据类型教程
- Java并发编程教程
- Java密码学教程
- Java多线程教程
- Java国际化(i18n)教程
- JavaFX教程
- Java9教程
扫描二维码
程序员编程王