一、初识 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 RedisTemplateredisTemplate(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 的相关配置。