Stash配置文件通常位于应用的src/main/resources/application.properties中,主要用于配置数据库连接、持久化策略、事务管理、连接池等设置,以下是Stash配置文件的详细解析:
数据源配置
# 数据源URL
spring.datasource.url=jdbc:h2:mem:stash;DB_CLOSE_ON_RETURN=false;createSequence=true
# 数据源用户名和密码
spring.datasource.username=stash
spring.datasource.password=stash
spring.datasource.driver-class-name:指定数据源的驱动类,根据数据库类型选择合适的驱动。spring.datasource.url:数据源的连接URL,例如H2的内存数据库或其他数据库的连接字符串。spring.datasource.username和spring.datasource.password:数据库的用户名和密码。
持久化策略配置
# 持久化策略实现 spring.data.jpa.hibernate.ddl-auto=update spring.data.jpa.properties.hibernate.format_sql=true # 数据库类型选择 spring.datasource.classname=org.h2.Driver
spring.data.jpa.hibernate.ddl-auto:JPA的数据定义自动策略,可选值包括update、create、none等。spring.data.jpa.properties.hibernate.format_sql:启用SQL格式化输出,方便调试和监控。
JDBC 配置
# 数据源基本设置 spring.datasource.show-sql=true spring.datasource.initializr.enabled=true
spring.datasource.show-sql:启用SQL日志输出,帮助调试数据库连接问题。spring.datasource.initializr.enabled:初始化数据源,确保数据库表结构存在。
事务管理配置
# 事务管理器配置 spring.transactionManager.tx-rollback-on-connection=false spring.transactionManager.exclusive-reentrant=false spring.transactionManager.is-rollback-on-concurrency= true # 使用Bitronix事务管理器 spring.transactionManager.class=org.springframework.transaction.jta.BitronixTransactionManager
spring.transactionManager.tx-rollback-on-connection:如果连接被关闭,是否自动回滚事务,默认为false。spring.transactionManager.exclusive-reentrant:是否为重入性事务管理器设计,默认为false。spring.transactionManager.is-rollback-on-concurrency:在并发事务中发生冲突时是否回滚,默认为true。spring.transactionManager.class:指定事务管理器实现类,例如BitronixTransactionManager。
连接池配置
# Hikari连接池配置 spring.datasource.hikari.driver-class=org.h2.Driver spring.datasource.hikari.physical.getConnection=30 spring.datasource.hikari.logical.getConnection=10 spring.datasource.hikari.max.idle=5 spring.datasource.hikari.min.idle=5 spring.datasource.hikari.max.inactive=60 spring.datasource.hikari.initialization.enabled=true # C3PO连接池配置 spring.datasource.c3po.dataSourceName=com.example.DataSource spring.datasource.c3po.maxConnections=50 spring.datasource.c3po.minConnections=5 spring.datasource.c3po.maxStatements=100 spring.datasource.c3po.minStatements=5 spring.datasource.c3po.debugEnabled=true
-
Hikari配置:
spring.datasource.hikari.physical.getConnection:物理连接的最大数量。spring.datasource.hikari.logical.getConnection:逻辑连接的最大数量。spring.datasource.hikari.max.idle:最大空闲连接数量。spring.datasource.hikari.min.idle:最小空闲连接数量。spring.datasource.hikari.max.inactive:最大空闲时间(秒)。spring.datasource.hikari.initialization.enabled:初始化连接池。
-
C3PO配置:
spring.datasource.c3po.dataSourceName:数据源名称。spring.datasource.c3po.maxConnections:最大连接数量。spring.datasource.c3po.minConnections:最小连接数量。spring.datasource.c3po.maxStatements:最大预编译语句数量。spring.datasource.c3po.minStatements:最小预编译语句数量。spring.datasource.c3po.debugEnabled:启用调试日志。
监控配置
# Prometheus配置 spring.prometheus.enabled=true spring.prometheus.db.enabled=true spring.prometheus.db.name=stash spring.prometheus.db.mbeans.enabled=true # Grafana配置 spring.grafana.enabled=true spring.grafana.token-for-internal-use=internal-token-123
-
Prometheus配置:
spring.prometheus.enabled:启用Prometheus监控。spring.prometheus.db.enabled:监控数据库。spring.prometheus.db.name:数据库名称,用于监控。spring.prometheus.db.mbeans.enabled:生成JMX beans供Prometheus监控。
-
Grafana配置:
spring.grafana.enabled:启用Grafana监控。spring.grafana.token-for-internal-use:Grafana的内部访问令牌。
安全配置
# HTTPS配置 spring.security.filterChainProxy=org.springframework.security.web.FilterChainProxy spring.security.requires-ssl= true spring.security.ssl.enabled= true spring.security.ssl.keystore.location= classpath:keystore.jks spring.security.ssl.truststore.location= classpath:truststore.jks spring.security.ssl.password= keystore-password # JWT配置 spring.security.oauth2.enabled=true spring.security.oauth2.provider.tokenstore.jwk.url=https://example.com/jwks # 密码策略 spring.security.password.policy=strict spring.security.password.strength=11
-
HTTPS配置:
spring.security.requires-ssl:强制HTTPS。spring.security.ssl.enabled:启用SSL。spring.security.ssl.keystore.location:密钥存储路径。spring.security.ssl.truststore.location:信任存储路径。spring.security.ssl.password:密钥密码。
-
JWT配置:
spring.security.oauth2.enabled:启用OAuth2。spring.security.oauth2.provider.tokenstore.jwk.url:获取JWK(JSON Web Key)的URL。
-
密码策略:
spring.security.password.policy:密码策略,strict要求较长复杂密码。spring.security.password.strength:密码强度要求,11为最长。
自定义映射
# 自定义映射配置 spring.jpa.hibernate.ddl-auto=update
spring.jpa.hibernate.ddl-auto:JPA的数据定义自动策略,可选值包括update、create、none等。
其他配置
# 日志级别 spring.logging.log-level=debug # 线程池配置 spring.scheduled.thread.pool.size=5
-
日志级别:
spring.logging.log-level:日志级别,debug为详细日志。
-
线程池:
spring.scheduled.thread.pool.size:线程池大小。
使用注意事项
- 根据实际数据库类型(如H2、MySQL、PostgreSQL)调整相应的配置。
- 确保数据库服务运行,例如H2需要在应用运行时创建内存数据库。
- 配置完毕后,重新启动应用并验证数据库连接是否成功。
- 对于高并发场景,需根据实际负载调整连接池参数。
遇到配置问题时,可以参考Stash官方文档或社区获取帮助。




