《后端程序员 · Nacos 常见配置 · 第一弹》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗
🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数,欢迎多多交流。👍

文章目录

    • 写在前面的话
    • server
    • spring.datasource
    • spring.redis
    • spring.cloud
    • spring.jackson
    • logging
    • spring.others
    • feign
    • ribbon
    • mybatis
    • springmvc
    • management
    • 总结陈词

CSDN.gif

写在前面的话

博主所在公司,采用Nacos作为注册中心和配置中心,在作为配置中心的过程中,总结了一些常见问题点,提供给各部门研发人员查阅。
此篇文章就介绍一下,Nacos 关于常见配置的,先整理了一部分,其实严格来说,算是SpringBoot的配置。

Tips:天街小雨润如酥,草色遥看近却无。最是一年春好处,绝胜烟柳满皇都。


server

描述:Spring Boot 中的 server 配置是用于配置应用程序的服务器相关设置的属性集合,这些属性通常用于定义应用程序的服务器行为和特性。

Tips:开发一般接触比较多的,只是port端口设定,但其实还有很多作用。

【端口配置】
server.port=8080

【上下文路径】
server.servlet.context-path=/myapp

【Tomcat 配置】

在 Spring Boot 中,默认使用的是 Tomcat 作为内嵌的 Servlet 容器。你可以通过在配置文件中添加以 server.tomcat 开头的配置来配置 Tomcat。

最大连接数:
server.tomcat.max-connections=10000

最大线程数:
server.tomcat.max-threads=200

最小空闲线程数:
server.tomcat.min-spare-threads=10

最大请求队列长度,超过将拒绝连接
server.tomcat.accept-count=100

连接超时时间:
server.tomcat.connection-timeout=20000
单位是毫秒,默认值是 -1,表示无限制,即不会发生连接超时。

HTTP 头部最大大小:
server.tomcat.max-http-header-size=8KB

最大可接收请求内容大小
server.tomcat.max-swallow-size=2MB

URI 编码:
server.tomcat.uri-encoding=UTF-8

==================

补充知识:max-connections 和 max-threads 的区别
两者都是用于调整 Tomcat 连接池的参数,但它们调整的是不同的资源。
max-connections:
max-connections 控制的是 Tomcat 连接池中的最大连接数。它指定了 Tomcat 服务器可以同时处理的最大连接数,即客户端与服务器的连接数上限。
当达到 max-connections 设置的值时,新的连接请求将被拒绝,直到有现有连接关闭释放资源。
增大 max-connections 可以提高服务器的并发能力,但同时也会增加服务器的资源消耗,特别是内存消耗。
max-threads:
max-threads 控制的是 Tomcat 连接池中的最大线程数。它指定了 Tomcat 服务器可以同时处理的最大线程数,即服务器能够同时处理的最大请求数。
当达到 max-threads 设置的值时,新的请求会被放入等待队列中,直到有空闲线程可用来处理请求。
增大 max-threads 可以提高服务器同时处理请求的能力,但同时也会增加 CPU 和内存等资源的消耗。
总的来说,max-connections 控制的是服务器与客户端之间的连接数,而 max-threads 控制的是服务器处理请求的线程数。调整这两个参数可以根据服务器的硬件配置和应用程序的负载情况来优化服务器的性能和并发能力。

【框架默认设定】

server:
  # 配置应用程序关闭的行为,如优雅关闭
  shutdown: graceful
  tomcat:
    mbeanregistry:
      enabled: true

spring.datasource

描述:spring.datasource 是 Spring Boot 中用于配置数据源(DataSource)的属性集合。数据源是应用程序与数据库之间的桥梁,它提供了数据库连接和连接池管理等功能,使得应用程序能够与数据库进行交互。可以配置的信息,包含但不限于连接信息、连接池大小、连接超时等。

【具体项目设定】
可以看到数据源的大部分属性,采用引用的方式,即读取global-config.yml内的推荐配置,而不是直接采用线上default.yml限定值。说明框架是允许开发人员针对具体项目情况对参数进行针对性的调整。

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    username: ${global.database.zoemdb.username}
    password: ${global.database.zoemdb.password}
    driver-class-name: ${global.database.zoemdb.driverClassName}
    url: ${global.database.zoemdb.url}
    druid:
      filter:
        # sql防火墙
        wall:
          enabled: false
        config:
          enabled: true
      connect-properties:
        config.decrypt: true
        # public-key
        config.decrypt.key: ${global.database.zoemdb.decryptKey}
      # 最大连接池数量
      max-active: ${global.database.pool.default.max-active:50}
      # 从连接池获取连接等待超时的时间
      max-wait: ${global.database.pool.default.max-wait:5000}
      # 最小连接池数量
      min-idle: ${global.database.pool.default.min-idel:1}
      # 配置一个连接在池中最大空闲时间,单位是毫秒
      min-evictable-idle-time-millis: ${global.database.pool.default.min-evictable-idle-time-millis:300000}
      # 连接泄露检查,打开removeAbandoned功能 , 连接从连接池借出后,长时间不归还,将触发强制回连接。回收周期随timeBetweenEvictionRunsMillis进行,
      # 如果连接为从连接池借出状态,并且未执行任何sql,并且从借出时间起已超过removeAbandonedTimeout时间,则强制归还连接到连接池中。
      remove-abandoned: ${global.database.pool.default.remove-abandoned:false}
      # 回收超时时间
      remove-abandoned-timeout-millis: ${global.database.pool.default.remove-abandoned-timeout-millis:80000}
      # 打开后,增强timeBetweenEvictionRunsMillis的周期性连接检查,
      # minIdle内的空闲连接,每次检查强制验证连接有效性. 参考:https://github.com/alibaba/druid/wiki/KeepAlive_cn
      keep-alive: ${global.database.pool.default.keep-alive:true}
      # 打开PSCache
      pool-prepared-statements: ${global.database.pool.default.pool-prepared-statements:true}
      # 指定每个连接上PSCache的大小,Oracle等支持游标的数据库,打开此开关,会以数量级提升性能,具体查阅PSCache相关资料
      max-pool-prepared-statement-per-connection-size: ${global.database.pool.default.max-pool-prepared-statement-per-connection-size:20}

spring.redis

描述:spring.redis 是 Spring Boot 中用于配置 Redis 连接的属性集合。Redis 是一种基于内存的数据存储服务,常用于缓存、消息队列等场景。通过配置 spring.redis 属性,你可以配置应用程序与 Redis 的连接信息、连接池配置、Redis Sentinel 配置等。

【具体项目设定】
项目的yml文件,仅指定了port和password,其他信息都是在default.yml限定死了。

【框架默认设定】

spring:
  cache:
    redis:
      # 缓存默认过期时间
      time-to-live: 90d
  redis:
    # 集群模式下该host无需配置
    # host: ${global.redis.host}
    password: ${global.redis.password}
    # 超时时间
    timeout: 2s
    lettuce:
      cluster:
        refresh:
          # 开启Redis集群拓扑自动刷新
          adaptive: true
          # 集群拓扑刷新周期
          period: 30s
    cluster:
      # 最大重定向次数
      max-redirects: 3
      # 集群节点列表
      nodes: ${global.redis.cluster.nodes}

spring.cloud

【spring.cloud.loadbalancer.retry】
在 Spring Cloud 中,spring.cloud.loadbalancer.retry 属性用于配置负载均衡器在发生请求失败时的重试行为。该属性指定了负载均衡器应该在发生连接故障或请求处理超时时进行的重试次数。

spring:
  cloud:
    loadbalancer:
      retry:
        enabled: true
        max-attempts: 3
        backoff:
          enabled: true
          delay: 1000
          max-delay: 3000
          multiplier: 2.0

解释每个配置项的含义:
enabled:是否启用负载均衡器的重试功能。默认为 true。
max-attempts:最大重试次数。默认为 3。
backoff:定义了重试的退避策略。
enabled:是否启用退避策略。默认为 true。
delay:初始延迟时间(毫秒)。默认为 1000。
max-delay:最大延迟时间(毫秒)。默认为 3000。
multiplier:延迟时间的增长倍数。默认为 2.0。
通过配置 spring.cloud.loadbalancer.retry 属性,你可以控制负载均衡器在发生请求失败时的重试行为,以提高系统的可靠性和稳定性。

【重试的优先级】
在 Spring Cloud 中,spring.cloud.loadbalancer.retry 用于配置负载均衡器的重试行为,而 Feign 也有自己的重试机制。当同时使用了 Spring Cloud 负载均衡器和 Feign 客户端时,它们的重试行为的优先级如下:
Feign 客户端的重试:
如果在 Feign 客户端中配置了重试机制(例如通过 Feign 的配置或者 Ribbon 的配置),那么 Feign 客户端的重试机制会优先生效。Feign 客户端的重试配置通常包括最大重试次数、重试间隔等参数。
Spring Cloud 负载均衡器的重试:
如果 Feign 客户端没有配置重试机制,但是 Spring Cloud 负载均衡器配置了重试行为(通过 spring.cloud.loadbalancer.retry 属性),那么负载均衡器的重试机制会生效。负载均衡器的重试配置包括最大重试次数、退避策略等参数。
因此,Feign 客户端的重试机制优先级高于 Spring Cloud 负载均衡器的重试机制。如果 Feign 客户端和 Spring Cloud 负载均衡器都配置了重试行为,那么 Feign 客户端的配置将覆盖负载均衡器的配置。

【feign默认重试】
Feign 默认情况下不会进行重试,即使发生了连接故障或请求处理超时等问题。如果你需要在 Feign 客户端中实现重试功能,你可以通过配置来启用 Feign 的重试机制。
在 Spring Cloud 中,你可以通过配置 feign.client.config.default.retryer 属性来启用 Feign 的重试功能。例如,你可以设置最大重试次数和重试间隔等参数。以下是一个示例配置:

feign:
  client:
    config:
      default:
        retryer: # 设置重试器
          maxAttempts: 3 # 最大重试次数
          backoff: # 退避策略
            delay: 1000 # 初始延迟时间(毫秒)
            maxDelay: 3000 # 最大延迟时间(毫秒)
            multiplier: 2.0 # 延迟时间的增长倍数

在上面的示例中,设置了最大重试次数为 3,初始延迟时间为 1000 毫秒,最大延迟时间为 3000 毫秒,延迟时间的增长倍数为 2.0。这意味着在发生连接故障或请求处理超时时,Feign 客户端会最多重试 3 次,并且每次重试的间隔会逐渐增加。


spring.jackson

spring.jackson 是 Spring Boot 中用于配置 Jackson JSON 序列化和反序列化的属性集合。Jackson 是一个用于处理 JSON 数据的 Java 库,Spring Boot 默认使用 Jackson 来处理 HTTP 请求和响应中的 JSON 数据。通过配置 spring.jackson 属性,你可以控制 JSON 数据的序列化和反序列化行为,包括日期格式化、属性命名策略、是否忽略 null 值等。

Spring Jackson 是 Spring 框架中集成的 JSON 处理库,它基于 Jackson 库实现了 JSON 和 Java 对象之间的转换。Jackson 是一个流行的 Java JSON 处理库,提供了高性能的 JSON 解析和生成功能。
通过配置下列属性,你可以定制 Jackson 在 Spring Boot 中的行为,以满足你的应用程序的需求。

日期格式化配置:
date-format:指定日期的格式。默认情况下,Jackson 使用 ISO-8601 格式。

spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss

时区配置:
time-zone:指定日期的时区。默认情况下,Jackson 使用系统默认时区。

spring:
  jackson:
    time-zone: Asia/Shanghai

时间戳配置:
serialization.write-dates-as-timestamps:指定是否将日期序列化为时间戳。
默认情况下,Jackson 使用 ISO-8601 格式,不过SpringBoot中,该属性的默认值为true。

spring:
  jackson:
    serialization:
      write-dates-as-timestamps: true

忽略未知属性:
serialization.fail-on-empty-beans:指定在序列化空对象时是否抛出异常。
默认情况下,Jackson 不会抛出异常。

spring:
  jackson:
    serialization:
      fail-on-empty-beans: false

自定义配置:
你还可以通过 spring.jackson.* 前缀配置任意的 Jackson ObjectMapper 属性。
例如,设置序列化的特性:

spring:
  jackson:
    property-naming-strategy: CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES
    serialization:
      indent-output: true

logging

描述:在 Spring Boot 应用程序中,日志记录是通过 Spring Boot 提供的默认日志框架实现的,默认情况下使用的是 Logback。

# 设置日志级别为 DEBUG
logging.level.root=DEBUG

# 设置日志输出格式为 JSON
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n

【默认日志级别】
在 Spring Boot 中,默认的日志级别是 INFO。这意味着除非明确指定了其他日志级别,否则日志消息只会记录 INFO 级别及以上的消息。如果你没有显式地配置日志级别,Spring Boot 会将根日志记录器(Root Logger)的级别设置为 INFO。
像开发经常反馈MyBatis的日志无法打印输出,其实是由于其输出语句使用了debug模式,当前类的日志级别是INFO的话,这里是无法打印的。

Tips:线上如果要输出这类型日志,可以在logging.yml配置或SBA调整,但要慎重。

//BatchByJdbcInterceptor
if (log.isDebugEnabled()) {
    log.debug("[SQL] [BatchByJdbc] SQL: {} , Params: {}", sql, JSON.toJSONString(execParam));
}

//MybatisSqlTraceLogInterceptor
if (log.isDebugEnabled() && !isPageCountSql) {
    log.debug("SQL返回行数:{} , SQL语法: \n{} \n{}", returnRows, sqlGrammar.replace("\n", " "), sqlParam);
}
logging:
  level:
    # Nacos 配置中心日志级别
    com.alibaba.cloud.nacos.client.NacosPropertySourceBuilder: debug
    # 全局异常处理器日志级别
    com.zoe.core.exception.handler.GlobalExceptionHandler: debug
    # 本地开发环境可以将日志级别设置为debug,线上请勿使用debug级别
    com.zoe.onelink.logging: debug
    # 输出Mybatis相关日志
    com.zoe.onelink.logging.trace.sql.mybatis: debug
    com.zoe.onelink.business.mybatis.interceptor: debug
    
logging:
  level:
    com.zoe.onelink.logging.trace.sql.SqlTraceLogInterceptor: debug
    org.springframework.context.support.PostProcessorRegistrationDelegate: warn
    com.alibaba.cloud.nacos.client.NacosPropertySourceBuilder: debug
    com.zoe.core.exception.handler.GlobalExceptionHandler: debug
    com.alibaba.nacos.client.naming: warn
    org.apache.dubbo.registry.nacos.NacosRegistry: warn
    com.alibaba.nacos.common.remote.client: warn
    com.zoe.onelink.logging: debug

【项目级的日志配置】
大部分开发会将logging配置书写在application-dev.yml,但要注意需要添加如下配置才能生效。
spring.profiles.active=dev

Tips:该配置提交不会影响生产环境,具体值在发布的时候会覆盖。


spring.others

【一些重要配置】

spring.main.allow-bean-definition-overriding=true
# Spring 不允许覆盖已经存在的 Bean 定义,如果尝试注册一个与现有 Bean 名称相同的新的 Bean,则会抛出异常。
# 将此属性设置为 true 可以允许覆盖已注册的 Bean 定义,即使已经存在同名的 Bean,也不会抛出异常,这样做有时可能会用于测试或特殊情况下的调试目的。但在实际生产环境中,通常不建议开启此选项,以避免意外覆盖和错误的 Bean 定义。
# 默认情况下 allow-bean-definition-overriding 是关闭的,即默认值为 false。

spring.jackson.serialization.write-dates-as-timestamps=true
# 这个配置告诉 Jackson 序列化器将日期对象转换为时间戳形式。
# 在将 Java 对象序列化为 JSON 字符串时,日期字段会以时间戳的形式表示。
# 请注意,这个配置仅影响序列化操作。在反序列化时,时间戳会被正确地解析为日期对象,无需额外配置。

spring.sleuth、spring.zipkin
# 链路追踪相关配置,不继续展开

spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB
spring.servlet.multipart.file-size-threshold=0
spring.servlet.multipart.location=/path/to/temp/dir
spring.servlet.multipart.resolve-lazily=true
# spring.servlet.multipart.max-file-size:
# 设置上传文件的最大大小限制。如果上传的文件大小超过了这个限制,
# 将会抛出 MaxUploadSizeExceededException 异常。默认值为 -1,表示不限制文件大小。
# spring.servlet.multipart.max-file-size:
# 设置每个请求的最大大小限制。如果请求的总大小(包括所有上传文件和其他请求参数)
# 超过了这个限制,将会抛出 MultipartException 异常。默认值为 -1,表示不限制请求大小。
# file-size-threshold:
# 设置文件大小阈值。上传文件大小超过了这个阈值时,文件会被写入磁盘;
# 否则,文件会保存在内存中。默认值为 0,表示所有文件都会保存在磁盘上。
# location:
# 设置临时文件存储位置。上传的文件在处理过程中会被保存为临时文件,默认情况下会保存在系统默认的临时目录中。你可以通过这个属性来指定其他的临时目录。
# resolve-lazily:
# 设置是否懒解析 multipart 请求。默认值为 false,表示在 Servlet 请求处理之前立即解析 multipart 请求。你可以将其设置为 true 来延迟解析 multipart 请求,以提高性能。

【框架关于Spring的默认配置】

spring:
  cache:
    redis:
      # 缓存默认过期时间
      time-to-live: 90d
  redis:
    # 集群模式下该host无需配置
    # host: ${global.redis.host}
    password: ${global.redis.password}
    # 超时时间
    timeout: 2s
    lettuce:
      cluster:
        refresh:
          # 开启Redis集群拓扑自动刷新
          adaptive: true
          # 集群拓扑刷新周期
          period: 30s
    cluster:
      # 最大重定向次数
      max-redirects: 3
      # 集群节点列表
      nodes: ${global.redis.cluster.nodes}
  zipkin:
    sender:
      type: web
    base-url: ${global.zipkin.baseUrl}
    compression:
      enabled: true
    encoder: proto3
  sleuth:
    messaging:
      kafka:
        enabled: false  
    circuitbreaker:
      enabled: false
    sampler:
      probability: 1
    redis:
      enabled: true
  # 配置文件上传大小限制
  servlet:
    multipart:
      max-file-size: 500MB
      max-request-size: 500MB

【具体项目设定参考】

spring:
  zipkin:
    sender:
      type: slf4j
    base-url: ${global.zipkin.baseUrl}
  sleuth:
    sampler:
      probability: 1
  elasticsearch:
    rest:
      username: ${global.es.username}
      password: ${global.es.password}
      uris:
        - ${global.es.host}:${global.es.port}

feign

在 Spring Cloud 应用中,Feign 是一个声明式的、模板化的 HTTP 客户端,它简化了与 RESTful 服务的交互。你可以通过在 application.properties 文件中配置 Feign 来定制其行为。

feign:
  httpclient:
    enabled: true
  client:
    config:
      default:
        connectTimeout: 5000
        readTimeout: 10000
      # 调用时常较长的接口
      emrIdesDocInfoTimeClient:
        connectTimeout: 5000
        readTimeout: 15000

【feign.httpclient.enabled】
在使用 Feign 时,默认情况下它使用的是 HttpURLConnection 来进行 HTTP 请求,但你也可以配置 Feign 来使用 Apache HttpClient 或 OkHttp 来替代默认的 HTTP 客户端。如果你想要使用 Apache HttpClient,你需要在项目中引入相关依赖,并在配置文件中进行相应的配置。
如果你使用的是 Spring Cloud,你可以直接在配置文件中配置 Feign 使用 Apache HttpClient,而无需创建额外的配置类(直接使用上面配置启用)。

【feign.client.config】
在使用 Feign 进行 HTTP 客户端调用时,你可以通过 feign.client.config 属性来配置 Feign 客户端的行为。这个属性允许你为每个 Feign 客户端指定特定的配置,以覆盖全局配置。
feign.client.config..connectTimeout=5000
feign.client.config..readTimeout=5000
请将 替换为你实际使用的 Feign 客户端的名称。这些配置选项可以帮助你定制每个 Feign 客户端的行为,以满足项目的需求。
如果你希望设置默认的 Feign 客户端配置,可以使用 feign.client.config.default 属性。这个属性允许你设置所有 Feign 客户端的默认配置,以覆盖全局配置。

# 连接超时和读取超时
feign.client.config.default.connectTimeout=5000
feign.client.config.default.readTimeout=5000
# 重试次数和间隔 
feign.client.config.default.retryer.maxAttempts=3
feign.client.config.default.retryer.backoffStrategy=org.springframework.cloud.openfeign.Retryer#DEFAULT
# 日志级别
feign.client.config.default.loggerLevel=full
# 自定义配置,你可以创建一个默认的 Feign 配置类,并将其作为默认配置。

【默认连接时间】
feign.client.config.default.connectTimeout 的默认值并不是直接在 Feign 或者 Spring Cloud 中指定的,它实际上是由底层 HTTP 客户端库(如 Apache HttpClient 或 OkHttp)所决定的,默认情况下它们可能有自己的默认连接超时时间。
在使用 Apache HttpClient 时,其默认连接超时时间通常是 0,表示无限等待。而在使用 OkHttp 时,默认连接超时时间可能是 10 秒。这些值是由具体的 HTTP 客户端库的实现决定的,并不是 Feign 或 Spring Cloud 所决定的。
同理,readTimeout 也类似,对于 Apache HttpClient,默认的读取超时时间通常是 -1,表示无限等待。而对于 OkHttp,默认的读取超时时间可能是 10 秒。这些值都是由具体的 HTTP 客户端库的实现决定的,而不是由 Feign 或 Spring Cloud 所决定的。

【Ribbon 和 Feign 超时时间优先级】
在 Spring Cloud 中,Feign 和 Ribbon 都是常用的用于服务间通信的组件,它们都有自己的超时配置。对于服务间的请求,如果同时使用了 Feign 和 Ribbon,两者的超时配置会有不同的优先级:
Feign 的优先级:
如果你使用了 Feign 来发送服务间的请求,并且在 Feign 客户端中设置了超时时间(例如 connectTimeout 和 readTimeout),那么 Feign 的超时配置会优先生效。这意味着 Feign 客户端会按照 Feign 的配置来设置连接超时和读取超时。
Ribbon 的优先级:
如果你没有在 Feign 客户端中设置超时时间,但是使用了 Ribbon 作为负载均衡器,那么 Ribbon 的超时配置会生效。Ribbon 也有自己的超时配置,例如 ribbon.ConnectTimeout 和 ribbon.ReadTimeout,它们会影响到底层的 HTTP 请求。
综上所述,Feign 的超时配置优先级高于 Ribbon。如果你同时使用了 Feign 和 Ribbon,并且在 Feign 客户端中设置了超时时间,那么 Feign 的超时配置会覆盖 Ribbon 的超时配置。

【框架默认配置】

feign:
  client:
    config:
      # 对象存储服务接口请求的超时时间。(业务组件统一设置)
      storage-service:
        readTimeout: 60000 #毫秒时间

ribbon

描述:ribbon的配置不展开介绍,下方是框架关于ribbon的默认配置。

ribbon:
  # 对当前节点的最大重试次数,不包括首次调用,默认值为0。
  MaxAutoRetries: 0
  # 下个节点数最大重试次数,不包括首个节点,默认值为1。不重试该值需要设置为-1 (0的话也不重试,但是会触发一次服务选举)
  MaxAutoRetriesNextServer: -1
  # 是否对所有请求进行失败重试, 设置为 false, 让feign只针对Get请求进行重试.
  OkToRetryOnAllOperations: false
  # true: 无论是接口请求超时、服务端处理失败、建立连接失败等,统一返回true,即可以重试
  okToRetryOnAllErrors: false
  # true: 只要是在跟服务端建立连接时出现错误,无论建立连接超时、建立连接失败等,统一返回true;false: 不重试
  okToRetryOnConnectErrors: false

mybatis

框架默认配置

mybatis-plus:
  configuration:
    # 使用空实现,防止正式环境多份日志
    log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl
    # 默认10分钟
    default-statement-timeout: 600

关闭一级缓存

#一级缓存修改为statement
mybatis-plus:
  configuration:
    local-cache-scope: statement

springmvc

Tips:部分属性前面已经介绍过,这里把相关的SpringMVC配置补充说明。

静态资源映射:
通过配置 spring.resources.static-locations 属性来指定静态资源的映射路径。默认情况下,Spring Boot 会将 /static、/public、/resources 和 /META-INF/resources 目录下的静态资源映射到根路径下。

Multipart 文件上传配置:
配置 spring.servlet.multipart 属性来设置文件上传的相关参数,如文件大小限制、临时文件存储位置等。

# 配置文件上传大小限制
spring:
  servlet:
    multipart:
      max-file-size: 500MB
      max-request-size: 500MB

字符编码配置:
通过配置 spring.http.encoding 属性来设置字符编码相关的选项,如请求编码、响应编码等。

异常处理配置:
通过配置 server.error 属性来设置异常处理的相关选项,如是否显示异常堆栈信息、错误页面等。


management

Spring Boot Actuator 提供了一系列管理端点(management endpoints),可以用于监控和管理 Spring Boot 应用程序。这些端点可以通过 HTTP 请求访问,提供了关于应用程序运行状态、健康状况、性能指标等信息。

框架默认配置

management:
  health:
    livenessstate:
      enabled: true
    # Spring Boot 2.4 以前版本
    readynessstate:
      enabled: true
    # Spring Boot 2.4 以后版本
    readinessstate:
      enabled: true
  endpoints:
    web:
      exposure:
        # 暴露所有端口
        include: "*"
  endpoint:
    health:
      show-details: always
      probes:
        enabled: true
    shutdown:
      enabled: true
  metrics:
    tags:
      application: ${spring.application.name:unknown}

总结陈词

此篇文章介绍了Nacos 常见配置第一部分,仅供学习参考。
💗 近期在整理职场入职新人必读的N各系列,积极备战!

CSDN_END.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/802601.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MQ基础1

对应B站视频: MQ入门-01.MQ课程介绍_哔哩哔哩_bilibili 微服务一旦拆分,必然涉及到服务之间的相互调用,目前我们服务之间调用采用的都是基于OpenFeign的调用。这种调用中,调用者发起请求后需要等待服务提供者执行业务返回结果后…

C#小结:未能找到类型或命名空间名“xxx”(是否缺少 using 指令或程序集引用?)

方案一:移除类库这些失效的引用,下载对应版本的dll(如有则不需要重复下载),重新添加引用 方案二:类库右键属性-调整目标框架版本(一般是降低版本) 方案三:调整类库编译顺…

【TensorRT】Yolov5-DeepSORT 目标跟踪

Yolov5-DeepSORT-TensorRT 本项目是 Yolo-DeepSORT 的 C 实现,使用 TensorRT 进行推理 🚀🚀🚀 开源地址:Yolov5_DeepSORT_TensorRT,求 star⭐ ~ 引言 ⚡ 推理速度可达25-30FPS,可以落地部署&…

分布式 I/O 系统Modbus TCP 耦合器BL200

BL200 耦合器是一个数据采集和控制系统,基于强大的 32 位微处理器设计,采用 Linux 操作系统,可以快速接入现场 PLC、SCADA 以及 ERP 系统, 内置逻辑控制、边缘计算应用,支持标准 Modbus TCP 服务器通讯,以太…

<数据集>铁轨缺陷检测数据集<目标检测>

数据集格式:VOCYOLO格式 图片数量:844张 标注数量(xml文件个数):844 标注数量(txt文件个数):844 标注类别数:3 标注类别名称:[Spalling, Squat, Wheel Burn] 序号类别名称图片数框数1Spalling3315522…

FastAPI 学习之路(五十)WebSockets(六)聊天室完善

我们这次只是对于之前的功能做下优化,顺便利用下之前的操作数据的接口,使用下数据库的练习。 在聊天里会有一个上线的概念。上线要通知大家,下线也要通知大家谁离开了,基于此功能我们完善下代码。 首先,我们的登录用…

亲子母婴行业媒体邀约宣发资源

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 亲子母婴行业是一个综合性的产业,涉及多个领域,包括儿童食品,儿童玩具,服装,洗护,月子中心,母婴护理&a…

Is Temperature the Creativity Parameter of Large Language Models?阅读笔记

最近有小伙伴来问LLM的参数该如何设计,废话不多说来看看paper吧。首先,常见的可以进行调参的几个值有temperature,top-p和top-k。今天这篇文章是关于temperature的。 原文链接:https://arxiv.org/abs/2405.00492 temperature如果…

Google如何构建AlphaFold 3来预测所有生命分子的结构和相互作用

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

硕博电子智能控制器、触摸显示屏在集装箱跨运车上的应用

港口跨运车,又称跨运车或轮胎式龙门吊(RTG),专门用于集装箱码头的装卸和搬运作业,能够迅速完成集装箱在码头前沿、堆场区域以及仓库之间的运输和堆垛,大幅度缩短了装卸周期,提高了港口物流周转效率。 现代跨运车往往配…

泛微e-cology WorkflowServiceXml SQL注入漏洞(POC)

漏洞描述: 泛微 e-cology 是泛微公司开发的协同管理应用平台。泛微 e-cology v10.64.1的/services/接口默认对内网暴露,用于服务调用,未经身份认证的攻击者可向 /services/WorkflowServiceXml 接口发送恶意的SOAP请求进行SQL注入,…

xiuno兔兔超级SEO插件(精简版)

xiuno论坛是一个一款轻论坛产品的论坛,但是对于这个论坛基本上都是用插件实现,一个论坛怎么能离开网站seo,本篇分享一个超级seo插件,自动sitemap、主动提交、自动Ping提交。 插件下载:tt_seo.zip

【Linux】线程——线程互斥的概念、锁的概念、互斥锁的使用、死锁、可重入和线程安全、线程同步、条件变量的概念和使用

文章目录 Linux线程4. 线程互斥4.1 线程互斥的概念4.2 锁的概念4.2.1 互斥锁的概念4.2.2 互斥锁的使用4.2.3 死锁4.2.4 可重入和线程安全 5. 线程同步5.1 条件变量的概念5.2 条件变量的使用 Linux线程 4. 线程互斥 我们之前使用了线程函数实现了多线程的简单计算模拟器。 可以…

python 循环优化

python循环是非常耗时的,所以遇到比较大的数组就要对循环做优化,代码: for i in range(pred_density_up.shape[0]):for j in range(pred_density_up.shape[1]):if pred_density_up[i][j] > 0.1:points.append([j , i ])上面的循环是最长见…

【 香橙派 AIpro评测】烧系统运行部署LLMS大模型跑开源yolov5物体检测并体验Jupyter Lab AI 应用样例(新手入门)

文章目录 一、引言⭐1.1下载镜像烧系统⭐1.2开发板初始化系统配置远程登陆💖 远程ssh💖查看ubuntu桌面💖 远程向日葵 二、部署LLMS大模型&yolov5物体检测⭐2.1 快速启动LLMS大模型💖拉取代码💖下载mode数据&#x…

nginx代理缓存

在服务器架构中,反向代理服务器除了能够起到反向代理的作用之外,还可以缓存一些资源,加速客户端访问,nginx的ngx_http_proxy_module模块不仅包含了反向代理的功能还包含了缓存功能。 1、定义代理缓存规则 参数详解: p…

esplice老项目(非maven)导入idea问题

解决导入idea显示不正常 老项目导入idea后,显示为如下所示: 显示的不太正常,正常显示为下面这个样子: 解决 非老项目 idea的项目中所有的文件全部变成了.java(已解决) 老项目 以下内容参考:idea导入项目后java文…

Word创建多级列表的样式

Word创建多级列表的样式 要求结果方法创建样式修改样式设置段落创建快捷键 关联多级列表 要求 创建自定义的三级列表样式,要求标题均为黑体,小四字号,1.5倍行距,有快捷键。 结果 方法 在样式中创建三个样式。 创建样式 录入名…

【入门级】docker

开头处生动的描述一下”码头工人”吧:小鲸鱼(登记处Registry:比如docker hub官方)背着好多集装箱(仓库repository:存放各种各样的镜像,一般存放的是一类镜像,这一类镜像中通过tag 版…

kubernetes k8s Deployment 控制器配置管理 k8s 红蓝部署 金丝雀发布

目录 1、Deployment控制器:概念、原理解读 1.1 Deployment概述 1.2 Deployment工作原理:如何管理rs和Pod? 2、Deployment资源清单文件编写技巧 3、Deployment使用案例:创建一个web站点 4、Deployment管理pod:扩…