{{userInfo.nickname}}
用户设置 退出登录

{{wikiTitle}}

yml配置文件说明

yml配置文件说明

yml配置文件说明

文件位置

如图所示:

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

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

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

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

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

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

# CRMEB 相关配置
crmeb:
  version: CRMEB-JAVA-SY-v2.2 # 当前代码版本
  domain: #配合swagger使用 # 待部署域名
  wechat-api-url:  #请求微信接口中专服务器
  wechat-js-api-debug: false #微信js api系列是否开启调试模式
  wechat-js-api-beta: true #微信js api是否是beta版本
  asyncConfig: true #是否同步config表数据到redis
  asyncWeChatProgramTempList: false #是否同步小程序公共模板库
  imagePath: /crmebimage这个文件绝对路径的上一级/ # 服务器图片路径配置 斜杠结尾
  demoSite: true # 是否演示站点 所有手机号码都会掩码
  activityStyleCachedTime: 10 #活动边框缓存周期 秒为单位,生产环境适当5-10分钟即可
  ignored: #安全路径白名单
    - swagger-ui/
    - swagger-resources/**
    - /**/v2/api-docs
    - /**/*.html
    - /**/*.js
    - /**/*.css
    - /**/*.png
    - /**/*.map
    - /favicon.ico
    - /actuator/**
    - /druid/**
    - api/admin/pagediy/info
    - api/public/**

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

spring:
  profiles:
  #  配置的环境
#    active: #spring.profiles.active#
    active:
  servlet:
    multipart:
      max-file-size: 50MB #设置单个文件大小
      max-request-size: 50MB #设置单次请求文件的总大小
  application:
    name: cemrb-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/test_crmeb_java?characterEncoding=utf-8&useSSL=false&serverTimeZone=GMT+8
    username: 
    password: 
  # quartz
  quartz:
    properties:
      org:
        quartz:
          scheduler:
            instanceName: quartzScheduler
            #            instanceName: clusteredScheduler
            instanceId: AUTO
          jobStore:
            class: org.quartz.impl.jdbcjobstore.JobStoreTX
            driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
            tablePrefix: QRTZ_
            isClustered: false
            clusterCheckinInterval: 10000
            useProperties: false
          #            dataSource: crmeb_java_beta
          threadPool:
            class: org.quartz.simpl.SimpleThreadPool
            threadCount: 10
            threadPriority: 5
            threadsInheritContextClassLoaderOfInitializingThread: true
    #数据库方式
    job-store-type: JDBC


  redis:
    host: 127.0.0.1 #地址
    port: 6379 #端口
    password: 123456
    timeout: 30000 # 连接超时时间(毫秒)
    database: 1  #默认数据库
    jedis:
      pool:
        max-active: 200 # 连接池最大连接数(使用负值表示没有限制)
        max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制)
        max-idle: 10 # 连接池中的最大空闲连接
        min-idle: 0 # 连接池中的最小空闲连接
        time-between-eviction-runs: -1 #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
    second:
      database: 14 # 微信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)


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

# 行为验证码
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

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

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

@Configuration
@ConfigurationProperties(prefix = "crmeb")
public class CrmebConfig {
    // 当前代码版本
    private String version;
    // 待部署域名
    private String  domain;
    // #请求微信接口中专服务器
    private String wechatApiUrl;
    // #微信js api系列是否开启调试模式
    private boolean wechatJsApiDebug;
    // #微信js api是否是beta版本
    private boolean wechatJsApiBeta;
    // #是否同步config表数据到redis
    private boolean asyncConfig;
    // #是否同步小程序公共模板库
    private boolean asyncWeChatProgramTempList;
    // 本地图片路径配置
    private String imagePath;
    // 是否演示站点 所有手机号码都会掩码
    private Boolean demoSite;
    // 活动边框缓存周期
    private Integer activityStyleCachedTime;
    // 活动边框参加 指定商品参加上限
    private Integer selectProductLimit;

    // 不过滤任何数据的url配置
    private List<String> ignored;

    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 isWechatJsApiDebug() {
        return wechatJsApiDebug;
    }

    public void setWechatJsApiDebug(boolean wechatJsApiDebug) {
        this.wechatJsApiDebug = wechatJsApiDebug;
    }

    public boolean isWechatJsApiBeta() {
        return wechatJsApiBeta;
    }

    public void setWechatJsApiBeta(boolean wechatJsApiBeta) {
        this.wechatJsApiBeta = wechatJsApiBeta;
    }

    public boolean isAsyncConfig() {
        return asyncConfig;
    }

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

    public boolean isAsyncWeChatProgramTempList() {
        return asyncWeChatProgramTempList;
    }

    public void setAsyncWeChatProgramTempList(boolean asyncWeChatProgramTempList) {
        this.asyncWeChatProgramTempList = asyncWeChatProgramTempList;
    }

    public String getImagePath() {
        return imagePath;
    }

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


    public Boolean getDemoSite() {
        return demoSite;
    }

    public void setDemoSite(Boolean demoSite) {
        this.demoSite = demoSite;
    }

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

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

    public Integer getActivityStyleCachedTime() {
        return activityStyleCachedTime;
    }

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

    public Integer getSelectProductLimit() {
        return selectProductLimit;
    }

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

    @Override
    public String toString() {
        return "CrmebConfig{" +
                "version='" + version + '\'' +
                ", domain='" + domain + '\'' +
                ", wechatApiUrl='" + wechatApiUrl + '\'' +
                ", asyncConfig=" + asyncConfig +
                ", imagePath='" + imagePath + '\'' +
                ", activityStyleCachedTime=" + activityStyleCachedTime +
                ", selectProductLimit=" + selectProductLimit +
                ", ignored=" + ignored +
                '}';
    }
}
{{cateWiki.like_num}}人点赞
0人点赞
评论({{cateWiki.comment_num}}) {{commentWhere.order ? '评论从旧到新':'评论从新到旧'}} {{cateWiki.page_view_num}}人看过该文档
评论(0) {{commentWhere.order ? '评论从旧到新':'评论从新到旧'}} 916人看过该文档
评论
{{item.user ? item.user.nickname : ''}} (自评)
{{item.content}}
{{item.create_time}} 删除
{{item.like ? item.like.like_num : 0}} {{replyIndex == index ? '取消回复' : '回复'}}
评论
{{items.user ? items.user.nickname : '暂无昵称'}} (自评)
{{items.content}}
{{items.create_time}} 删除
{{items.like ? items.like.like_num : 0}} {{replyIndexJ == (index+'|'+indexJ) ? '取消回复' : '回复'}}
评论
目录
  • {{item}}