前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Rainbond最佳实践】Spring Boot框架配置MySQL

【Rainbond最佳实践】Spring Boot框架配置MySQL

作者头像
Rainbond开源
发布2019-04-19 17:40:28
1.1K0
发布2019-04-19 17:40:28
举报
代码语言:javascript
复制
Rainbond开源软件介绍:
Rainbond是国内首个开源的生产级无服务器PaaS。
深度整合基于Kubernetes的容器管理、多类型CI/CD应用构建与交付、多数据中心的资源管理等技术,提供云原生应用全生命周期解决方案,构建应用与基础设施、应用之间及基础设施之间的互联互通生态体系。12月12日,Rainbond正式开源。[Rainbond详细介绍](http://www.rainbond.com/docs/stable/getting-started/design-concept.html)
[Rainbond项目地址](https://github.com/goodrain/rainbond)

Spring Boot框架简化了新Spring应用的初始搭建以及开发过程,云帮支持平台部署Spring Boot类应用。

云帮提供Spring Boot配置MySQL服务的示例,去云市一键式部署Spring Boot-MySQL示例

以下内容是本地创建和运行该示例的过程:

创建示例

使用spring-boot-cli创建示例

代码语言:javascript
复制
$ docker run -it --rm \
-v $PWD:/app goodrainapps/spring-boot-cli:1.5.9 spring init --dependencies=web spring-boot-mysql-demo

进入示例类文件存放目录

代码语言:javascript
复制
$ cd spring-boot-mysql-demo/src/main/java/com/example/springbootmysqldemo

添加DemoApplication.java

代码语言:javascript
复制
@Controller@SpringBootApplicationpublic class DemoApplication {        @RequestMapping("/")        @ResponseBody
       String home() {                return "Hello World!";
       }        public static void main(String[] args) {
               SpringApplication.run(DemoApplication.class, args);
       }
}

构建示例

为了加快maven构建,在setting.xml中添加了国内的mirror。将setting.xml拷贝到您的spring-boot-mysql-demo中。

代码语言:javascript
复制
$ cd spring-boot-mysql-demo
$ docker run -it --rm \
-v "$PWD":/app/build \
-w /app/build maven:3.5.2-jdk-7-alpine mvn -B -DskipTests=true -s settings.xml clean install

运行

执行以下命令运行Hello World 示例

代码语言:javascript
复制
$ cd spring-boot-mysql-demo
$ docker run -it --rm -v $PWD:/app -w /app -p 8080:8080  goodrainapps/openjdk:8u131-jre-alpine java  -jar target/*.jar

访问http://localhost:8080查看运行结果。

配置数据库

云帮提供Spring-boot-mysql-demo的相关配置目录结构如下,配置文件内容仅供参考。

详细配置参考下文:

连接MySQL

添加以下内容,将此应用与数据库进行连接。

pom.xml内添mysql数据库服务 :

代码语言:javascript
复制
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>5.1.9</version></dependency>

添加JDBC驱动:

代码语言:javascript
复制
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-jdbc</artifactId></dependency>

application.properties添加数据库连接信息:

代码语言:javascript
复制
spring.datasource.url=jdbc:mysql://${MYSQL_HOST}:${MSYQL_PORT}/demo?createDatabaseIfNotExist=true
spring.datasource.username=${MYSQL_USER}
spring.datasource.password=${MYSQL_PASS}
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.maxActive=10
spring.datasource.maxIdle=5
spring.datasource.minIdle=2
spring.datasource.initialSize=5
spring.datasource.removeAbandoned=true

在源码添加DatabaseConfig.java

代码语言:javascript
复制
@Configurationpublic class DatabaseConfig {    @Bean
   @Primary
   @ConfigurationProperties(prefix = "spring.datasource")    public DataSource dataSource() {        return new org.apache.tomcat.jdbc.pool.DataSource();
   }
}

数据库初始化

使用 JPA 管理生成实体的映射关系的代码。

代码语言:javascript
复制
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-jpa</artifactId></dependency

数据库重构与迁移

使用LiquiBase,以便将JPA生成实体的映射关系在数据库体现。第一步,在pom.xml添加:

代码语言:javascript
复制
<dependency>
  <groupId>org.liquibase</groupId>
  <artifactId>liquibase-core</artifactId>
  <version>3.4.1</version></dependency>

第二步,创建 Liquibase 的修改日志,默认从 db.changelog-master.yaml 读取:

代码语言:javascript
复制
databaseChangeLog:
 - changeSet:
     id: 1
     author: <your_name>
     changes:
       - createTable:
           tableName: person
           columns:
             - column:
                 name: id
                 type: int
                 autoIncrement: true
                 constraints:                        
                   primaryKey: true
                   nullable: false
             - column:
                 name: first_name
                 type: varchar(255)
                 constraints:
                   nullable: false
             - column:
                 name: last_name
                 type: varchar(255)
                 constraints:
                   nullable: false

模板渲染

Thymeleaf可以帮助渲染XMLXHTMLHTML5内容的模板引擎,它也可以轻易的与Spring MVC等Web框架集成作为Web应用的模板引擎。在pom.xml中添加:

代码语言:javascript
复制
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>

docker化改造

为了支持 Spring Boot MySQL demo 轻松部署在云帮,将demo使用Dockerfile构建镜像,在云帮实现一键式部署

代码语言:javascript
复制
#使用配置好环境的父镜像
FROM maven:3.5.2-jdk-7-alpine
#创建demo源码工作目录
RUN mkdir /app
#将本地源码拷贝到镜像中
COPY . /app/
#指定工作目录
WORKDIR /app
#声明映射端口
EXPOSE 5000
#指定maven的配置文件,文件内制定新的mirror地址
RUN mvn -B -DskipTests=true clean install
#启动脚本
ENTRYPOINT ["/app/run.sh"]

构建镜像

代码语言:javascript
复制
$ docker build -t goodrainapps/spring-boot-mysql-demo .

运行

代码语言:javascript
复制
#运行mysql$ docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql
代码语言:javascript
复制
#运行示例$ docker run -it --rm --link mysql \
 -p 5000:5000 \  -e MYSQL_HOST=mysql \  -e MYSQL_PORT=3306 \  -e MYSQL_USER=root \  -e MYSQL_PASS=123456 \
 goodrainapps/spring-boot-mysql-demo

访问http://localhost:5000查看Spring Boot 框架配置MySQL服务的运行界面。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-01-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Rainbond 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建示例
    • 构建示例
      • 运行
      • 配置数据库
        • 连接MySQL
          • 数据库初始化
            • 数据库重构与迁移
            • 模板渲染
            • docker化改造
              • 构建镜像
                • 运行
                相关产品与服务
                云数据库 SQL Server
                腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档