Sping Boot入門到實戰之實戰篇(二):一些常用功能的Spring Boot Starters
阿新 • • 發佈:2018-12-21
包含功能
- 阿里雲訊息服務MNS
- 阿里雲訊息佇列服務(即時訊息、延遲訊息、事務訊息)
- AOP日誌
- 基於MyBatis通用Mapper及DRUID的資料庫訪問
- dubbo支援
- 錯誤處理
- 七牛圖片服務
- redis多連線池支援
- swagger配置
- 跨域配置
原始碼地址:https://github.com/ronwxy/base-spring-boot (如果覺得有幫助,請幫忙給個star)
主要版本
- springboot 1.5.13.RELEASE
- spring 4.3.17.RELEASE
1.在pom.xml檔案中引入依賴管理
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.springboot.base</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.2-SNAPSHOT</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
2.在pom.xml檔案中引入你想要使用的starters,如
<dependency>
<groupId>com.springboot.base</groupId>
<artifactId>swagger-spring-boot-starter</artifactId>
</dependency>
3.在專案的配置檔案中配置starters需要的相關配置屬性
- swagger-spring-boot-starter
swagger:
api-description: demo for swagger api use swagger starters #api描述 如 ${spring.application.name}
api-title: demo #api標題 如 ${spring.application.name}
apis-base-package: com.example.demo.api #掃描的包名 可填根包名
group-name: demo #組名 如 ${spring.application.name}
swagger-registry-path: http://{swaggerServerIp:port}/swagger/register #swaggerapi 註冊介面地址
- tkmapper-spring-boot-starter druid資料來源配置
spring:
datasource:
druid:
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://{dbServerIp:port}/db_name?charSet=UTF-8
username: dbUsername
password: dbPassword
# 自定義配置
initialSize: 2 # 初始化大小
minIdle: 1 # 最小連線
maxActive: 5 # 最大連線
druidServletSettings:
allow: 127.0.0.1
deny:
loginUsername: admin
loginPassword: Passw0rd
resetEnable: true
druidFilterSettings:
exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'
maxWait: 60000 # 配置獲取連線等待超時的時間
timeBetweenEvictionRunsMillis: 60000 # 配置間隔多久才進行一次檢測,檢測需要關閉的空閒連線,單位是毫秒
minEvictableIdleTimeMillis: 300000 # 配置一個連線在池中最小生存的時間,單位是毫秒
validationQuery: SELECT 'x'
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true # 開啟PSCache,並且指定每個連線上PSCache的大小
maxPoolPreparedStatementPerConnectionSize: 20
filters: stat #,wall(新增wall程式碼裡不能直接拼接sql,druid有sql注入校驗) # 配置監控統計攔截的filters,去掉後監控介面sql無法統計,'wall'用於防火牆
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 # 通過connectProperties屬性來開啟mergeSql功能;慢SQL記錄
useGlobalDataSourceStat: true # 合併多個DruidDataSource的監控資料
tkmapper配置, 無預設配置
-
自動掃描entity及mapper包,掃描路徑與springboot預設路徑一致
-
掃描
@Mapper
-
自動註冊
com.springboot.boot.tkmapper.mapper.BaseMapper
基礎介面 -
qiniu-spring-boot-starter
qiniu:
access-key: xxx
secret-key: xxx #金鑰
buckets:
- bucket-name: xxx #桶名
bucket-host: xxx #桶域名
scheme: http #協議
bucket-private: true #是否是私有桶
pipeline: imageThumbQueue #管道名
token-expired-time: 3600 #token過期時間秒
- alimq-spring-boot-starter
aliyun:
mq:
onsAddr: http://onsaddr-internet.aliyun.com/rocketmq/nsaddr4client-internet #mq地址
topic: xxx #主題名稱
accessKey: xxx #key
secretKey: xxx #金鑰
producer: #生產者配置
enabled: true #是否開啟生產者
producerId: xxx #生產者ID
consumer: #消費者配置
enabled: true #是否開啟消費者
consumerId: xxx #消費者ID
tag-suffix: xxx #主題標籤字尾,用來區分同一主題下不同tag
- dubbo-spring-boot-starter
dubbo:#dubbo zookeeper註冊中心配置
zk:
registry: ip:port #註冊中心zookeeper地址
用法
@Configuration
@EnableDubboProvider
@EnableDubboConsumer
public class DubboConfig{
}
-
aoplog-spring-boot-starter 沒有配置
-
error-spring-boot-starter
- 沒有配置
- 提供預設的全域性異常處理器
com.springboot.boot.error.exception.ExceptionHandlerAutoConfiguration$DefaultGlobalExceptionHandler
-
alimns-spring-boot-starter
mns:
access-id: xxx
access-key: xxx
account-endpoint: xxx
- redisclient-spring-boot-starter
spring:
redis:
host: ip
database: 1
redis:
clients:
db1:
host: ip
database: 2
clients-enabled: true #是否開啟多個客戶端
@Configuration
@RedisClient("db1")//除了預設的連線池會例項化另一個連線池
public class ConfigClass{
@Bean
public RedisTokenStore getRedisTokenStore(RedisClientFactory factory){
//獲取db1的連線池
RedisConnectionFactory connectionFactory = factory.getInstance("db1",RedisConnectionFactory.class);
return new RedisTokenStore(connectionFactory);
}
}
排除自動配置示例
@SpringBootApplication(exclude = Swagger2AutoConfiguration.class)
public class TestApplication {
public static void main(String[] args) {
new SpringApplicationBuilder(TestApplication.class).run(args);
}
}