赞
踩
pom文件引入依赖
- <!-- 内嵌mysql server -->
- <dependency>
- <groupId>com.wix</groupId>
- <artifactId>wix-embedded-mysql</artifactId>
- <version>4.6.1</version>
- <scope>compile</scope>
- </dependency>
springboot项目整合EmbeddedMysql配置类
-
- import com.wix.mysql.EmbeddedMysql;
- import com.wix.mysql.ScriptResolver;
- import com.wix.mysql.config.MysqldConfig;
- import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
- import org.springframework.context.annotation.Configuration;
-
- import javax.annotation.PostConstruct;
- import javax.annotation.PreDestroy;
- import java.util.concurrent.TimeUnit;
-
- import static com.wix.mysql.EmbeddedMysql.anEmbeddedMysql;
- import static com.wix.mysql.config.Charset.UTF8;
- import static com.wix.mysql.config.MysqldConfig.aMysqldConfig;
- import static com.wix.mysql.distribution.Version.v5_6_23;
-
- @Configuration
- @ConditionalOnProperty(prefix = "cms",name = "embedded.mysql.enabled",havingValue = "true")
- public class EmbeddedMysqlConfig {
-
- private EmbeddedMysql mysql;
-
- @PostConstruct
- public void launchDb(){
- //mysql版本
- MysqldConfig config = aMysqldConfig(v5_6_23)
- .withCharset(UTF8)
- //端口号
- .withPort(3306)
- //用户名密码
- .withUser("tarzan", "123456")
- //时区
- .withTimeZone("Asia/Shanghai")
- //超时
- .withTimeout(1, TimeUnit.MINUTES)
- .withServerVariable("max_connect_errors", 666)
- .withTempDir("C:\\Users\\liuya\\Desktop\\data\\")
- .build();
- mysql = anEmbeddedMysql(config)
- //初始化数据表结构
- .addSchema("tarzan_cms", ScriptResolver.classPathScript("db/schema.sql"))
- .start();
-
- System.out.println(mysql.getConfig().toString());
- }
-
- @PreDestroy
- public void stopDb(){
- mysql.stop();
- }
- }
-
配置完,springboot项目启动时候,会先启动内置的mysql服务,spring配置文件配置数据库连接
- spring:
- datasource:
- type: com.alibaba.druid.pool.DruidDataSource
- driverClassName: com.mysql.cj.jdbc.Driver
- url: jdbc:mysql://localhost:3306/tarzan_cms?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true
- username: tarzan
- password: 123456
这样就省去了,安装mysql的步骤,不过目前这种配置方式,每次项目重启,会新建一个新的mysql服务,原来的数据会丢失。
详细大家可以参考EmbeddedMysql的GitHub源码。
GitHub - wix/wix-embedded-mysql: embedded mysql based on https://github.com/flapdoodle-oss/de.flapdoodle.embed.process
EmbeddedMysql是一个Java库,用于在本地开发和测试环境中嵌入式地启动和管理MySQL数据库实例。它允许开发者在应用程序中以编程方式控制MySQL服务器的启动、停止和配置,提供了便捷的方法来创建和销毁临时数据库实例。下面是对EmbeddedMysql的详细解释:
EmbeddedMysql:EmbeddedMysql是一个基于Java的开源库,用于在本地环境中嵌入式地启动和管理MySQL数据库实例。它可以以编程方式控制MySQL服务器的生命周期,并提供了一系列API来配置和操作数据库实例。
嵌入式数据库:EmbeddedMysql实现了将MySQL作为一个嵌入式数据库运行的功能。嵌入式数据库是直接嵌入到应用程序中的数据库,无需独立安装和配置,方便在本地开发和测试环境中使用。
版本支持:EmbeddedMysql支持多个MySQL版本,包括5.6、5.7和8.0等。开发者可以根据项目需要选择合适的MySQL版本进行使用。
启动和停止:EmbeddedMysql提供了启动和停止MySQL服务器的方法,可以方便地在应用程序中控制MySQL服务器的生命周期。
数据库配置:EmbeddedMysql允许开发者通过配置文件或编程方式来设置MySQL服务器的配置,包括端口号、数据库名称、用户权限等。
数据库初始化:EmbeddedMysql支持在启动MySQL服务器时自动执行SQL脚本,用于初始化数据库结构和数据。
数据库销毁:EmbeddedMysql提供了销毁数据库实例的方法,可以方便地清理临时数据库,防止数据残留。
数据库连接:EmbeddedMysql允许应用程序通过JDBC连接字符串连接到嵌入式数据库实例,并进行数据操作。
测试支持:EmbeddedMysql特别适合用于单元测试和集成测试。它可以在测试开始前启动数据库实例,在测试结束后停止数据库实例,从而实现独立的测试环境。
引入依赖:首先,在项目的pom.xml文件中引入embedded-mysql依赖,以及相应的MySQL驱动库。
配置数据库:通过编程方式或配置文件设置MySQL服务器的配置,如端口号、数据库名称、用户名密码等。
启动数据库:使用EmbeddedMysql的API方法启动嵌入式MySQL服务器。
连接数据库:通过JDBC连接字符串连接到嵌入式数据库实例,使用JDBC API进行数据操作。
停止数据库:在测试或应用程序关闭时,调用EmbeddedMysql的API方法停止嵌入式MySQL服务器。
方便性:EmbeddedMysql使得在本地开发和测试环境中使用MySQL变得非常方便。无需手动安装和配置MySQL服务器,可以通过编程方式启动和停止数据库实例。
灵活性:EmbeddedMysql提供了丰富的API方法来控制MySQL服务器的配置和行为。开发者可以根据项目需要进行相应的配置和操作。
测试支持:EmbeddedMysql特别适合用于单元测试和集成测试,可以创建独立的测试环境,方便进行测试数据的初始化和清理。
版本支持:EmbeddedMysql支持多个MySQL版本,可以根据项目需求选择合适的MySQL版本使用。
资源占用:嵌入式数据库会占用一定的内存和CPU资源,需要根据系统配置和测试需求进行适量调整。
数据库初始化:在测试或应用程序启动时,需要确保数据库实例处于一个干净的状态,避免残留的测试数据影响结果。
版本兼容性:EmbeddedMysql的版本与项目所使用的MySQL版本要保持一致,并注意库文件的对应关系。
EmbeddedMysql是一个Java库,用于在本地开发和测试环境中嵌入式地启动和管理MySQL数据库实例。它提供了简便的API方法来控制MySQL服务器的启动、停止和配置,方便地创建和销毁临时数据库。EmbeddedMysql特别适用于单元测试和集成测试,可以快速创建独立的测试环境。通过引入依赖、配置数据库和使用EmbeddedMysql的API方法,可以轻松地在本地环境中使用嵌入式MySQL实例。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。