从头开始开发一个java后端项目:8集成多环境、actuator

202 阅读4分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路

前言

明天就是新年了,提前祝大家新年快乐!今天在公司里无心开发,也无心卷新的知识点了。本篇文章就先简单的介绍一下标题的几个技术点把

多环境

先说一下为什么要配置后端项目多环境把

  • 我们运行的环境是多环境的。这句话看起来像是一个病句,而在实践中,我们可能会遇到开发时使用的是数据库a,测试生产使用的时数据库b和c。所以我们需要配置多环境
  • 如果使用的时开源开发的问题。这个问题其实是我自己遇到的。我在编写搭建后端环境的时候,往往会不小心把自己的服务器配置提交上去。这样就使得我的服务器和数据十分不安全,所以我需要一个不会提交上去的配置文件:即现在.gitignoer中配置的application.yml

实现多环境

我们先复制两份application.yml,分别命名为application-dev.yml和application-self.yml。这两个文件仅保留数据库相关的配置

spring:
  datasource:
    driver-class-name: com.p6spy.engine.spy.P6SpyDriver
    url: jdbc:p6spy:mysql://???:3306/xxx?useUnicode=true&characterEncoding=UTF-8&useSSL=false
    username: root
    password: supporter
    type: com.alibaba.druid.pool.DruidDataSource
    #   数据源其他配置
    druid:
      #     配置初始化大小、最小、最大线程数
      initialSize: 5
      minIdle: 5
      #     CPU核数+1,也可以大些但不要超过20,数据库加锁时连接过多性能下降
      maxActive: 20
      #     最大等待时间,内网:800,外网:1200(三次握手1s)
      maxWait: 60000
      timeBetweenEvictionRunsMillis: 60000
      #     配置一个连接在池中最大空间时间,单位是毫秒
      minEvictableIdleTimeMillis: 300000
      validationQuery: SELECT 1
      testWhileIdle: true
      #     设置从连接池获取连接时是否检查连接有效性,true检查,false不检查
      testOnBorrow: true
      #     设置从连接池归还连接时是否检查连接有效性,true检查,false不检查
      testOnReturn: true
      #     可以支持PSCache(提升写入、查询效率)
      poolPreparedStatements: true
      #   配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
      filters: stat,wall,slf4j
      #     保持长连接
      keepAlive: true
      maxPoolPreparedStatementPerConnectionSize: 20
      useGlobalDataSourceStat: true
      connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
      db-type: mysql
      stat-view-servlet: #配置监控页功能
        enabled: true  #默认开启,这里显示说明
        login-username: root #登录名
        login-password: supporter #登录密码
        reset-enable: false #禁用重置按钮
      web-stat-filter: #监控web
        enabled: true
        url-pattern: /* #监控所有
        exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'  #放行
      filter:
        stat: #对上面filters里的stat的详细配置
          slow-sql-millis: 1000 #慢sql时间是毫秒单位的  执行时间1秒以上的为慢SQL
          log-slow-sql: true #日志记录
          enabled: true
        wall:
          enabled: true
          config:
            drop-table-allow: false #禁用删除表的SQL

然后修改application.yml如下

server:
  port: 1001
spring:
  profiles:
    active: self
mybatis-plus:
  global-config:
    db-config:
      logic-delete-field: del_flag # 全局逻辑删除的实体字段名
      logic-delete-value: 1 # 逻辑已删除值(默认为 1)
      logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)

这里我们可以看到添加了一个spring.profiles.active属性,通过这个即可定义我们当前使用的配置文件为application.yml和application-self.yml

验证多环境

我们直接启动项目,可以正常启动即代表配置成功

集成actuator

actuator是常用的spring boot服务监控依赖。我们这里先集成然后简单的举几个监控的例子。后续我们会使用garfna和普罗米修斯实现监控告警

添加依赖

在pom.xml的dependencies配置中添加依赖如下

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

在application.yml中添加配置如下

management:
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    health:
      show-details: always
    httptrace:
      enabled: true

然后,我们重启项目,直接访问http://127.0.0.1:1001/actuator会如下显示 监控页.png 这里我们可以复制链接进行访问,可以显示服务的当前状态

结语

本篇文章我们实现了多环境配置和actuator,今天在看gitee时发现百度出了一个低代码平台下篇文章我们准备集成一下到自己的Vue项目中
本文所有代码已上传的gitee,欢迎有兴趣的掘友们startgitee.com/liangminghu…
欢迎关注我的掘金账号:juejin.cn/user/261290…
下期预告:百度低代码平台amis集成