Gradle Spring Boot詳解

一、初識 Gradle Spring Boot

Gradle 是一種基於 Apache Ant 和 Apache Maven 概念的項目自動化構建工具。它使用一種基於 Groovy 的特定領域語言(DSL)來聲明項目設置,而不是傳統的 XML。

Spring Boot 是一個用於創建可獨立運行的、基於 Spring 的應用程序的 Spring 模塊,它基於 Spring 框架,主要是簡化了使用 Spring 的難度。Spring Boot 提供了自動化配置的方式,可以快速構建 Spring 應用程序,大幅度提高了開發效率。

Gradle Spring Boot 把 Gradle 和 Spring Boot 有機地結合在一起,它可以方便地構建應用程序和部署環境,同時支持多種構建和部署方式,並且支持很多常見的插件,比如 Java、Groovy、Scala、Kotlin 和 Android。

二、Gradle Spring Boot的優點

1、簡潔易用:Gradle Spring Boot 藉助於 DSL,以及 Spring Boot 精簡資源的特性,可以大幅度簡化應用程序的開發過程,提高開發效率。

2、可配置性強:Gradle Spring Boot 可以方便地配置 Gradle 的各項屬性,同時也能夠配置 Spring Boot 的各種設置,例如將應用程序無縫地整合到雲環境中。

3、插件支持豐富:Gradle Spring Boot 內置了豐富的插件,增加了 Gradle 的靈活性。

4、多種構建和部署方式:Gradle Spring Boot 支持多種構建和部署方式,比如 Docker 和 Kubernetes,能夠方便地部署在基礎設施上。

5、易於測試:Gradle Spring Boot 還支持多種測試工具,例如 JUnit、Mockito、Spock 等,可以很方便地對應用程序進行測試。

三、Gradle Spring Boot的實例

1、Gradle Spring Boot 快速開始

// build.gradle文件
plugins {
    id 'org.springframework.boot' version '2.5.4'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

group = 'com.gradlespringboot'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

上述代碼是 Gradle Spring Boot 項目的 build.gradle 文件,其中包括了 Spring Boot 相關配置和依賴管理。

2、Gradle Spring Boot 實現多環境配置

// application.yml文件
server:
  port: ${PORT:8080}
spring:
  application:
    name: gradlespringboot
  profiles:
    active: @spring.profiles.active@
---
spring:
  profiles: dev
  datasource:
    url: jdbc:mysql://localhost:3306/gradlespringboot?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
    username: root
    password: root
---
spring:
  profiles: prod
  datasource:
    url: jdbc:mysql://localhost:3306/gradlespringboot?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
    username: root
    password: root

上述代碼是 Gradle Spring Boot 的多環境配置文件,其中包括了開發環境和生產環境的配置,可以根據需要進行切換。

3、Gradle Spring Boot 實現Swagger2配置

// build.gradle文件
plugins {
  id 'org.springframework.boot' version '2.5.4'
  id 'io.spring.dependency-management' version '1.0.11.RELEASE'
  id 'java'
}

group = 'com.gradlespringboot'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    compile group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2'
    compile group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2'
}

上述代碼是 Gradle Spring Boot 的 build.gradle 文件,在默認依賴中添加了 Swagger2 的相關依賴。

// Swagger2配置類
package com.gradlespringboot.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("Gradle Spring Boot API")
                .description("Gradle Spring Boot Restful API文檔")
                .contact(new Contact("Gradle Spring Boot", "", ""))
                .version("1.0.0")
                .build();
    }

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.gradlespringboot"))
                .paths(PathSelectors.any())
                .build();
    }
}

上述代碼是 Gradle Spring Boot 中的 Swagger2 配置類,其中定義了 API 的一些基本信息,可以實現 API 文檔的在線展示。

4、Gradle Spring Boot 實現 Redis 依賴配置

// build.gradle文件
plugins {
  id 'org.springframework.boot' version '2.5.4'
  id 'io.spring.dependency-management' version '1.0.11.RELEASE'
  id 'java'
}

group = 'com.gradlespringboot'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-data-redis', version: '2.5.4'
}

上述代碼是 Gradle Spring Boot 的 build.gradle 文件,在默認依賴中添加了 Redis 的相關依賴。

// Redis 配置類
package com.gradlespringboot.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

@Configuration
public class RedisConfig {

    @Value("${spring.redis.host}")
    private String host;

    @Value("${spring.redis.port}")
    private int port;

    @Value("${spring.redis.password}")
    private String password;

    @Value("${spring.redis.database}")
    private int database;

    @Bean(name = "redisConnectionFactory")
    @ConditionalOnMissingBean
    public RedisConnectionFactory redisConnectionFactory() {
        RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
        redisStandaloneConfiguration.setHostName(host);
        redisStandaloneConfiguration.setPort(port);
        redisStandaloneConfiguration.setPassword(password);
        redisStandaloneConfiguration.setDatabase(database);
        JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(redisStandaloneConfiguration);
        return jedisConnectionFactory;
    }

    @Bean(name="redisTemplate")
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate redisTemplate = new RedisTemplate();
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
        redisTemplate.afterPropertiesSet();
        return redisTemplate;
    }
}

上述代碼是 Gradle Spring Boot 的 Redis 配置類,可以實現對 Redis 的相關配置。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/185731.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-26 21:07
下一篇 2024-11-26 21:07

相關推薦

發表回復

登錄後才能評論