yml配置文件说明

yml配置文件说明

文件位置

如图所示,

application.yml—基础(本地)环境配置文件

application-beta.yml—开发环境配置文件

application-dev.yml—测试环境配置文件

application-prod.yml—正式环境配置文件

后三个环境配置文件的作用,是在不同的环境中,对应的yml中的值会对基础配置文件的值进行替换

所以我们这里只对application.yml进行说明

# CRMEB 相关配置
crmeb:
  version: CRMEB-JAVA-MER-v1.0 # 当前代码版本,这里尽量不要进行修改,方便后续有问题时,针对版本号对你提供服务
  domain: #配合swagger使用 # 待部署域名
  asyncConfig: false #是否同步config表数据到redis
  imagePath: /www/wwwroot/api.admin.net/ # 服务器图片路径配置 斜杠结尾
  retailStoreBrokerageRatio: 30 #佣金返佣比例和上限
  activityStyleCachedTime: 10 #活动边框缓存周期 秒为单位,生产环境适当5-10分钟即可
  selectProductLimit: 100 # 商品选择 指定商品上线
  productTagCacheMinutes: 10 # 商品标签缓存分钟数
  orderCancelTime: 30 # 订单支付取消时间,单位分钟
  ignored: #安全路径白名单,在进行响应处理时,对此路径的响应直接放行,不进行额外处理
      - swagger-ui/
    - swagger-resources/**
    - /**/v2/api-docs
      - /**/*.html
      - /**/*.js
    - /**/*.css
    - /**/*.png
      - /**/*.map
      - /favicon.ico
    - /actuator/**
    - /druid/**
      - api/admin/platform/pagediy/info

# 配置端口
server:
  port: 8080                # 项目使用的端口号
  servlet:
    context-path: /         # 访问path
  tomcat:
    uri-encoding: UTF-8     # 默认编码格式
    max-threads: 1000       # 最大线程数量 默认200
    min-spare-threads: 30   # 初始化启动线程数量

spring:
  profiles:
    active:
  servlet:
    multipart:
      max-file-size: 50MB #设置单个文件大小
      max-request-size: 50MB #设置单次请求文件的总大小
  application:
    name: crmeb-admin #这个很重要,这在以后的服务与服务之间相互调用一般都是根据这个name
  jackson:
    locale: zh_CN
    time-zone: GMT+8
    date-format: yyyy-MM-dd HH:mm:ss
  #  数据库配置
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/java_mer_dev?characterEncoding=utf-8&useSSL=false&serverTimeZone=GMT+8
    username: java_mer_dev
    password: java_mer_dev
  # quartz (admin项目需要进行配置)
  quartz:
    properties:
      org:
        quartz:
          scheduler:
            instanceName: quartzScheduler
            instanceId: AUTO
          jobStore:
            class: org.quartz.impl.jdbcjobstore.JobStoreTX
            driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
            tablePrefix: QRTZ_
            isClustered: false
            clusterCheckinInterval: 10000
            useProperties: false
          threadPool:
            class: org.quartz.simpl.SimpleThreadPool
            threadCount: 10
            threadPriority: 5
            threadsInheritContextClassLoaderOfInitializingThread: true
    #数据库方式
    job-store-type: JDBC
# 捕获404异常
mvc:
    throw-exception-if-no-handler-found: true
resources:
    add-mappings: false

# redis相关配置
redis:
    host: 127.0.0.1 #地址
    port: 6379 #端口
    password: 000000 #密码,这里要求redis配置密码
    timeout: 30000 # 连接超时时间(毫秒)
    database: 9  #默认数据库
    jedis:
      pool:
        max-active: 200 # 连接池最大连接数(使用负值表示没有限制)
        max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制)
        max-idle: 10 # 连接池中的最大空闲连接
        min-idle: 0 # 连接池中的最小空闲连接
        time-between-eviction-runs: -1 #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
    second:
      database: 13 # 微信accessToken存储库

debug: true # 查看生效和失效的自动配置类
# 日志配置
logging:
  level:
    io.swagger.*: error
    com.zbjk.crmeb: debug
    org.springframework.boot.autoconfigure: ERROR
  config: classpath:logback-spring.xml
  file:
    path: ./crmeb_log

# mybatis 配置
mybatis-plus:
  mapper-locations: classpath*:mapper/*/*Mapper.xml #xml扫描,多个目录用逗号或者分号分隔(告诉 Mapper 所对应的 XML 文件位置)
  typeAliasesPackage: com.zbkj.**.model
  # 配置slq打印日志
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  global-config:
    db-config:
#      logic-delete-field: isDel  #全局逻辑删除字段值 3.3.0开始支持,详情看下面。
      logic-delete-value: 1 # 逻辑已删除值(默认为 1)
      logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)

# 行为验证码
aj:
  captcha:
    type: default       # 验证码类型
    water-mark: CRMEB Java   # 水印
    slip-offset: 5      # 校验滑动拼图允许误差偏移量(默认5像素)
    aes-status: true    # aes加密坐标开启或者禁用(true|false)
    interference-options: 2 # 滑动干扰项(0/1/2)
    font-style: 1       # 点选字体样式 默认Font.BOLD
    font-size: 25       # 点选字体字体大小
    req-frequency-limit-enable: false   # 接口请求次数一分钟限制是否开启 true|false
    req-get-lock-limit: 5     # 验证失败5次,get接口锁定
    req-get-lock-seconds: 360   # 验证失败后,锁定时间间隔,s
    req-get-minute-limit: 30     # get接口一分钟内请求数限制
    req-check-minute-limit: 60    # check接口一分钟内请求数限制
    req-verify-minute-limit: 60     # verify接口一分钟内请求数限制

    # 滑动验证,底图路径,不配置将使用默认图片
    # 支持全路径
    # 支持项目路径,以classpath:开头,取resource目录下路径,例:classpath:images/jigsaw
    jigsaw: classpath:images/jigsaw
    #滑动验证,底图路径,不配置将使用默认图片
    ##支持全路径
    # 支持项目路径,以classpath:开头,取resource目录下路径,例:classpath:images/pic-click
    pic-click: classpath:images/pic-click
    # 对于分布式部署的应用,我们建议应用自己实现CaptchaCacheService,比如用Redis或者memcache,
    # 参考CaptchaCacheServiceRedisImpl.java
    # 如果应用是单点的,也没有使用redis,那默认使用内存。
    # 内存缓存只适合单节点部署的应用,否则验证码生产与验证在节点之间信息不同步,导致失败。
    # !!! 注意啦,如果应用有使用spring-boot-starter-data-redis,
    # 请打开CaptchaCacheServiceRedisImpl.java注释。
    # redis ----->  SPI: 在resources目录新建META-INF.services文件夹(两层),参考当前服务resources。
    # 缓存local/redis...
    cache-type: redis
    # local缓存的阈值,达到这个值,清除缓存
    cache-number: 1000
    # local定时清除过期缓存(单位秒),设置为0代表不执行
    timing-clear: 3600

    history-data-clear-enable: false

#swagger 配置
swagger:
  basic:
    enable: true #是否开启
    check: false #是否打开验证
    username: #访问swagger的账号
    password: #访问swagger的密码

# wx-java-tools 第三方框架仅仅用到了微信小程序直播功能 是用小程序直播时必须配置
wx:
  miniapp:
    configs:
      - appid: wx7f1691a608f5b777 #微信小程序的appid
        secret: f8aef2e9fc7bba28df873a1a111fd19a #微信小程序的Secret
        token: CrmebJava #微信小程序消息服务器配置的token
        aesKey:  #微信小程序消息服务器配置的EncodingAESKey
        msgDataFormat: JSON

    config-storage:
       type: redistemplate

在这里只说明CRMEB 相关配置的使用

在crmeb-common项目下的config文件夹下有CrmebConfig文件,就是这个文件在项目启动时,加载所有yml中CRMEB 相关配置的值,并在其他需要的地方进行使用,在二开时,如果需要增加对应的私有配置,需要同样在CrmebConfig中添加对应属性和get/set方法,方便在项目中使用

@Configuration
@ConfigurationProperties(prefix = "crmeb") // 加载yml中CRMEB 相关配置的值
public class CrmebConfig{
    // 当前代码版本
    private String version;
    // 待部署域名
    private String domain;
    // #请求微信接口中专服务器
    private String wechatApiUrl;
    // #是否同步config表数据到redis
    private Boolean asyncConfig;
    // 本地图片路径配置
    private String imagePath;
    // 佣金返佣比例和上限
    private Integer retailStoreBrokerageRatio;
    // 活动边框缓存周期
    private Integer activityStyleCachedTime;
    // 活动边框参加 指定商品参加上限
    private Integer selectProductLimit;

    // 商品标签缓存分钟数
    private Long productTagCacheMinutes;
    // 不过滤任何数据的url配置
    private List<String> ignored;

    // 订单支付取消时间,单位分钟
    private Integer orderCancelTime;

    public Integer getRetailStoreBrokerageRatio() {
        return retailStoreBrokerageRatio;
    }

    public void setRetailStoreBrokerageRatio(Integer retailStoreBrokerageRatio) {
        this.retailStoreBrokerageRatio = retailStoreBrokerageRatio;
    }

    public String getVersion() {
        return version;
    }

    public void setVersion(String version) {
        this.version = version;
    }

    public String getDomain() {
        return domain;
    }

    public void setDomain(String domain) {
        this.domain = domain;
    }

    public String getWechatApiUrl() {
        return wechatApiUrl;
    }

    public void setWechatApiUrl(String wechatApiUrl) {
        this.wechatApiUrl = wechatApiUrl;
    }

    public Boolean getAsyncConfig() {
        return asyncConfig;
    }

    public void setAsyncConfig(Boolean asyncConfig) {
        this.asyncConfig = asyncConfig;
    }

    public String getImagePath() {
        return imagePath;
    }

    public void setImagePath(String imagePath) {
        this.imagePath = imagePath;
    }

    public Integer getSelectProductLimit() {
        return selectProductLimit;
    }

    public void setSelectProductLimit(Integer selectProductLimit) {
        this.selectProductLimit = selectProductLimit;
    }

    public Integer getActivityStyleCachedTime() {
        return activityStyleCachedTime;
    }

    public void setActivityStyleCachedTime(Integer activityStyleCachedTime) {
        this.activityStyleCachedTime = activityStyleCachedTime;
    }

    public List<String> getIgnored() {
        return ignored;
    }

    public void setIgnored(List<String> ignored) {
        this.ignored = ignored;
    }

    public Long getProductTagCacheMinutes() {
        return productTagCacheMinutes;
    }

    public void setProductTagCacheMinutes(Long productTagCacheMinutes) {
        this.productTagCacheMinutes = productTagCacheMinutes;
    }

    public Integer getOrderCancelTime() {
        return orderCancelTime;
    }

    public void setOrderCancelTime(Integer orderCancelTime) {
        this.orderCancelTime = orderCancelTime;
    }

    @Override
    public String toString() {
        return "CrmebConfig{" +
                "version='" + version + '\'' +
                ", domain='" + domain + '\'' +
                ", wechatApiUrl='" + wechatApiUrl + '\'' +
                ", asyncConfig=" + asyncConfig +
                ", imagePath='" + imagePath + '\'' +
                ", retailStoreBrokerageRatio=" + retailStoreBrokerageRatio +
                ", activityStyleCachedTime=" + activityStyleCachedTime +
                ", selectProductLimit=" + selectProductLimit +
                ", productTagCacheMinutes=" + productTagCacheMinutes +
                ", ignored=" + ignored +
                ", orderCancelTime=" + orderCancelTime +
                '}';
    }
}
本页目录