Java-常用配置
配置文件
配置文件下载官网地址
jar包查询网址: https://mvnrepository.com
阿里maven镜像网址: https://maven.aliyun.com/mvn/guide
springboot生成器: https://start.spring.io/
SpringBoot配置文件(KEY-VALUE结构)
SpringBoot的配置文件有两种:
application.properties
application.yml
两者区别如下:
特点:
properties编辑的数据 本质都是String类型的字符串
properties中的key value结构使用 =号方法动态链接
properties中无需添加多余的’'号
properties中加载时默认的字符集的编码格式是ISO-8859-1 如果写中文需要指定字符集
特点
yml中 key/value 使用 :+空格 方式连接
yml中文件有层级关系,注意缩进
yml中加载时默认的字符集时UTF-8,不会出现乱码情况。
默认情况下是properties结尾的配置文件,都放在src/main/resources目录。
正常的情况是先加载yml,再加载properties文件。如果相同的配置存在于两个文件中。最后会使用properties中的配置。最后读取的优先集最高。
配置优先级从高到低:pom.xml> user settings > global settings
–file:./config/
–file:./
–classpath:/config/
–classpath:/
优先级由高到底,高优先级的配置会覆盖低优先级的配置
环境分隔符"—"拆分成两个yml 实现 环境切换
端口、路径配置:
server:
#端口号
port: 8080
servlet:
#项目访问路径
context-path: /
#定义id,可以向注册中心注册的服务
spring:
application:
name: xxx-xxx
数据源(DataSource)配置
#由于pom.xml文件中添加jdbc的依赖包,所以该行必须配置
spring:
datasource:
url: databaseName:mysql://127.0.0.1:3306/databaseName?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
username: root
password: root
#serverTimezone=GMT%2B8 配置时区 GMT"%2B" → "+8" 东八区
#useUnicode=true 是否使用Unicode编码
#characterEncoding=utf8 字符集编码格式 utf-8编码
#autoReconnect=true 是否断线后自动重连
#allowMultiQueries=true 是否允许mybatis执行多个sql(批量操作)默认每个标签只能允许编辑一行有效sql
hikari 数据连接池配置:
#springboot默认的数据连接池 HikariCP效率最高,支持高并发
connection-timeout: 30000 #等待连接池分配连接的超时时间,超过时间还没有分配就发生SQLException 默认30秒
minimum-idle: 5 #最小连接数
maximum-pool-size: 20 #最大连接数
auto-commit: true #自动提交
idle-timeout: 60000 #连接超时的最大时间,超时则被释放,默认10分钟
max-lifetime: 1800000 #连接的生命时长,超时没有被使用则释放,默认30分钟
connection-test-query: select 1
pool-name: DatasourceHikariCP #连接池名称
Mybatis-plus配置
mybatis-plus:
#定义别名包 作用: 以后封装POJO对象时自动进行拼接
type-aliases-package: com....pojo
#引入mapper配置文件
mapper-locations: classpath:/.../.xml
#开启驼峰映射
configuration:
map-underscore-to-camel-case: true
#驼峰规则方法:
#字段 user_id 映射时,会自动的去处 _ 线之后首字母大写 userId
#动态赋值给属性
日志(sql)打印配置
logging:
level:
com./.mapper: debug
shiro的配置
shiro:
hash-algorithm-name: md5
hash-iterations: 2
login-url: /index.html
unauthorized-url: /unauthorized.html
anon-urls:
- /api/login/doLogin*
- /api/druid/**
- /api/swagger-ui.html
- /api/webjars/**
- /api/swagger-resources/
- /api/v2/**
- /api/login/captcha
- /api/login/checkLogin
logout-url: /api/login/logout*
authc-urls:
- /*
自定义线程池配置
当springboot中默认的线程池配置,不满足我们实际项目需求时,我们可以对线程池进行自定义的配置,关键配置如下:
spring.task.execution.pool.core-size=8
spring.task.execution.pool.queue-capacity=512
spring.task.execution.pool.max-size=256
spring.task.execution.pool.keepalive=60000
spring.task.execution.thread-name-prefix=async-service-task-
/*
core-size :核心线程数,当池中线程数没达到core-size的值时,每接收一个新的任务都会创建一个新线程,然后存储到池。假如池中线程数已经达到core-size设置的值,再接收新的任务时,要检测是否有空闲的核心线程,假如有,则使用空闲的核心线程执行新的任务。
queue-capacity:队列容量,假如核心线程数已达到core-size设置的值,并且所有的核心线程都在忙,再来新的任务,会将任务存储到任务队列。
max-size: 最大线程数,当任务队列已满,核心线程也都在忙,再来新的任务则会创建新的线程,但所有线程数不能超过max-size设置的值,否则可能会出现异常(拒绝执行)
keep-alive:线程空闲时间,假如池中的线程数多余core-size设置的值,此时又没有新的任务,则一旦空闲线程空闲时间超过keep-alive设置的时间值,则会被释放。
thread-name-prefix:线程名的前缀,项目中设置线程名的目的主要是为了对线程进行识别,一旦出现线程问题,可以更好的定位问题。
*/
RabbitMQ的相关配置
spring:
rabbitmq:
host: localhost
port: 5672
virtual-host: /mall
username: mall
password: mall
publisher-confirms: true #消息发送到交换器确认
publisher-returns: true #消息发送到队列确认
环境切换
开发时可能会遇到 办公地点的变化. 开发可能在公司完成,但是线上部署时需要在甲方完成.
开发环境和测试环境可能不同.如果频繁修改 效率太低.
# 选择默认环境 SpringCloud 配置中心机制 统一管理YML配置文件
spring:
profiles:
active: test
---
# 特点:
# 1. YML中 key/value 使用 :+空格 方式链接
# 2. YML中文件有层级关系 写的时候注意缩进.
# 3. YML中默认的程序加载时默认的字符集是UTF-8编码. 所以不会有中文乱码问题.
server:
port: 8080
#定义环境名称
spring:
config:
activate:
on-profile: prod
#测试案例1:属性赋值 注意事项 编辑key时最好添加业务名称
redis:
host: 10.0.0.4
port: 6379
#环境分隔符 原来的一个YML 拆分为2个YML
---
server:
port: 9000
#定义环境名称
spring:
config:
activate:
on-profile: test
redis:
host: 192.168.1.1
port: 7000