1. 程式人生 > >Sping Boot入門到實戰之實戰篇(二):一些常用功能的Spring Boot Starters

Sping Boot入門到實戰之實戰篇(二):一些常用功能的Spring Boot Starters

包含功能

  • 阿里雲訊息服務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);
    	}
    }