一、初识 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的优点
- 简洁易用:Gradle Spring Boot 借助于 DSL,以及 Spring Boot 精简资源的特性,可以大幅度简化应用程序的开发过程,提高开发效率。
- 可配置性强:Gradle Spring Boot 可以方便地配置 Gradle 的各项属性,同时也能够配置 Spring Boot 的各种设置,例如将应用程序无缝地整合到云环境中。
- 插件支持丰富:Gradle Spring Boot 内置了丰富的插件,增加了 Gradle 的灵活性。
- 多种构建和部署方式:Gradle Spring Boot 支持多种构建和部署方式,比如 Docker 和 Kubernetes,能够方便地部署在基础设施上。
- 易于测试: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<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> 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 的相关配置。