您的位置:

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 的相关配置。