资讯专栏INFORMATION COLUMN

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

xingqiba / 1661人阅读

摘要:最佳实践框架配置开源软件介绍是国内首个开源的生产级无服务器。详细介绍项目地址框架简化了新应用的初始搭建以及开发过程,云帮支持平台部署类应用。配置数据库云帮提供的相关配置目录结构如下,配置文件内容仅供参考。

【Rainbond最佳实践】Spring Boot框架配置MySQL
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创建示例

$ docker run -it --rm 
-v $PWD:/app goodrainapps/spring-boot-cli:1.5.9 spring init --dependencies=web spring-boot-mysql-demo

进入示例类文件存放目录

$ cd spring-boot-mysql-demo/src/main/java/com/example/springbootmysqldemo

添加DemoApplication.java

@Controller
@SpringBootApplication
public 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中。

$ 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 示例

$ 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数据库服务 :


   mysql
   mysql-connector-java
   5.1.9

添加JDBC驱动:


   org.springframework.boot
   spring-boot-starter-jdbc

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

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

@Configuration
public class DatabaseConfig {
    @Bean
    @Primary
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource dataSource() {
        return new org.apache.tomcat.jdbc.pool.DataSource();
    }
}
数据库初始化

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


   org.springframework.boot
   spring-boot-starter-data-jpa

数据库重构与迁移

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


   org.liquibase
   liquibase-core
   3.4.1

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

databaseChangeLog:
  - changeSet:
      id: 1
      author: 
      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中添加:


   org.springframework.boot
   spring-boot-starter-thymeleaf
docker化改造

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

#使用配置好环境的父镜像
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"]
构建镜像
$ docker build -t goodrainapps/spring-boot-mysql-demo .
运行
#运行mysql
$ docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql
#运行示例
$ 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服务的运行界面

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/68205.html

相关文章

  • 微服务架构选Java还是选Go - 多用户负载测试

    摘要:微服务架构允许我们再创建新应用时自由选择不同的技术和编程语言。个用户时,性能显着降低,而仍然是完美的。总结使用相同的硬件,应用程序可以提供两倍于具有数据库的应用的并发用户数。 Ivan Nikitsenka 微服务架构允许我们再创建新应用时自由选择不同的技术和编程语言。不过究竟哪种语言更适合我们当下的硬件?回答这个问题,需要搞明白Java和Go编写的相同应用程序之间的性能差异。 先决条...

    lentoo 评论0 收藏0
  • Spring Cloud 微服务与 Service Mesh 的融合

    摘要:并不会在微服务框架中有其它的注册机制。微服务框架本身不会维护服务组件的启动顺序,这一问题可以由来解决。启动先后逻辑为被依赖的服务先启动,只有当前服务所依赖的服务全部正常启动后,才会开始启动流程。 概述 这篇文档,着重解决一个问题:Spring Cloud 融合于 Rainbond 原生 Service Mesh 的正确姿势是什么样子的。 Rainbond 原生支持 Service Me...

    fyber 评论0 收藏0
  • 关于云平台,开发者需要做哪些准备?

    摘要:微软已经很久没有支持开源社区了,这也是很多公司不采用的原因之一。当然微软总是致力于提供无的工具简单的语法和良好的教程,他们最近也意识到,开源可以为提供更多的创新和业务。 得益于CTO、CEO和CDO们积极的推动,IT基础设施正在向云环境迁移,底层架构师则在热烈讨论围绕着云原生应用的SaaS、PaaS和微服务架构,而开发者们正在大显身手,努力探索云计算的魔盒,找出什么是对业务有价值的,什...

    newtrek 评论0 收藏0
  • 【推荐】最新200篇:技术文章整理

    摘要:作为面试官,我是如何甄别应聘者的包装程度语言和等其他语言的对比分析和主从复制的原理详解和持久化的原理是什么面试中经常被问到的持久化与恢复实现故障恢复自动化详解哨兵技术查漏补缺最易错过的技术要点大扫盲意外宕机不难解决,但你真的懂数据恢复吗每秒 作为面试官,我是如何甄别应聘者的包装程度Go语言和Java、python等其他语言的对比分析 Redis和MySQL Redis:主从复制的原理详...

    BicycleWarrior 评论0 收藏0
  • 【推荐】最新200篇:技术文章整理

    摘要:作为面试官,我是如何甄别应聘者的包装程度语言和等其他语言的对比分析和主从复制的原理详解和持久化的原理是什么面试中经常被问到的持久化与恢复实现故障恢复自动化详解哨兵技术查漏补缺最易错过的技术要点大扫盲意外宕机不难解决,但你真的懂数据恢复吗每秒 作为面试官,我是如何甄别应聘者的包装程度Go语言和Java、python等其他语言的对比分析 Redis和MySQL Redis:主从复制的原理详...

    Mr_houzi 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<