Bootstrap

最新版IntelliJ IDEA 2024.2.3 创建SpringBoot项目(包含各种依赖的选择和功能)

创建SpringBoot项目

1 . 打开IDEA 选择新建项目

在这里插入图片描述

2. 基础项目创建

在顶端几个选项可以选择创建基本的java项目

填写项目名称,文件位置,选择构建工具
在这里插入图片描述

3. 下方选择springboot

在这里插入图片描述
选择构建的方式

三种方式虽然不同但是,基本功能都一致,

Gradle-Groovy 是指使用 Groovy 语言编写的 Gradle 构建脚本。

4.点击下一步进入依赖选择

将有很多依赖供你选择

在这里插入图片描述

下面我将逐个介绍这些依赖的功能

1. 在这里插入图片描述

GraalVM Native Support:用于支持将Java应用编译为本地可执行文件。

GraphQL DGS Code Generation:用于生成GraphQL相关代码,通常用于GraphQL API的开发。

Spring Boot DevTools:提供开发时的热部署功能,加快开发过程中的应用更新和调试。

Lombok:一个Java库,通过注解可以自动生成常见代码,如getter、setter、构造函数等,减少样板代码的书写。

Spring Configuration Processor:用于在IDE中提供自动完成和验证Spring配置文件的功能。

Docker Compose Support:帮助集成和管理Docker Compose文件,方便在开发过程中使用Docker部署应用。

Spring Modulith:用于支持模块化Spring应用程序的开发

2 .web

在这里插入图片描述
这些依赖是用于构建Web相关功能的工具和框架,

Spring Web:用于构建传统的同步Web应用程序。

Spring Reactive Web:支持响应式编程的Web应用开发,基于Reactor库。

Spring for GraphQL:用于构建GraphQL API。

Rest Repositories:基于Spring Data REST,用于快速暴露Spring Data仓库为RESTful Web服务。

Spring Session:用于在分布式环境中管理用户会话。

Rest Repositories HAL Explorer:提供一个简单的浏览器UI来探索和测试暴露的REST资源。

Spring HATEOAS:用于构建遵循HATEOAS原则的RESTful API,使得客户端可以通过链接导航API资源。

Spring Web Services:用于创建和使用SOAP Web服务。

Jersey:一种用于开发RESTful Web服务的开源框架,符合JAX-RS规范。

Vaadin:用于构建现代化的Web GUI,提供了一种Java编程模型。

Netflix DGS:用于构建GraphQL服务的框架,提供简化的开发体验。

htmx:用于增强HTML页面功能的JavaScript库,使其能够利用AJAX与服务器进行更动态的交互。

3 .模板引擎

用于在Web应用中生成动态网页
在这里插入图片描述

Thymeleaf:适合Spring应用的现代模板引擎,支持HTML5,提供自然模板,也能在浏览器中直接查看。

Apache Freemarker:功能强大的Java模板引擎,广泛用于生成HTML网页和其他基于文本的内容。

Mustache:逻辑无关的模板引擎,简单且轻量,适用于多种语言的实现。

Groovy Templates:使用Groovy语言编写的简单模板引擎,适用于需要动态生成内容的场景。

JTE:一种静态编译的模板引擎,具有高性能,通常用于生成快速和类型安全的HTML。

4.安全性和身份验证

在这里插入图片描述

Spring Security:用于为Java应用提供全面的安全功能,包括认证和授权。

OAuth2 Client:支持OAuth2协议的客户端功能,用于获取和管理访问令牌。

OAuth2 Authorization Server:用于实现OAuth2授权服务器,管理用户认证和访问授权。

OAuth2 Resource Server:用于保护资源服务器,验证并处理来自OAuth2客户端的访问令牌。

Spring LDAP:提供与LDAP服务器的集成功能,方便进行用户认证和目录数据访问。

Okta:用于与Okta集成,实现身份验证和授权服务。

5.数据库操作

在这里插入图片描述

JDBC API:用于连接和执行SQL操作的Java API。

Spring Data JPA:提供JPA数据层的简化操作支持,与ORM技术集成。

Spring Data JDBC:轻量级的数据访问框架,不需要ORM,直接使用JDBC。

Spring Data R2DBC:用于异步数据库操作的响应式数据访问框架。

MyBatis Framework:支持自定义SQL、存储过程和高级映射的持久层框架。

Liquibase Migration:用于数据库版本控制和迁移的工具。

Flyway Migration:另一个数据库迁移工具,支持简单明确的SQL脚本管理。

JOOQ Access Layer:通过生成的Java代码类型安全地构建SQL查询。

IBM DB2 Driver:用于连接IBM DB2数据库的驱动程序。

Apache Derby Database:嵌入式关系数据库,适合轻量级应用。

H2 Database:嵌入式数据库,适合开发和测试阶段使用。

HyperSQL Database:内存中运行的关系数据库,轻量且快速。

MariaDB Driver:用于连接MariaDB数据库的驱动程序。

MS SQL Server Driver:用于连接Microsoft SQL Server数据库的驱动程序。

MySQL Driver:用于连接MySQL数据库的驱动程序。

Oracle Driver:用于连接Oracle数据库的驱动程序。

PostgreSQL Driver:用于连接PostgreSQL数据库的驱动程序。

6.NoSQL数据库交互

在这里插入图片描述

Spring Data Redis (Access+Driver):用于与Redis数据库交互。

Spring Data Reactive Redis:用于与Redis的异步和响应式交互。

Spring Data MongoDB:用于与MongoDB数据库交互。

Spring Data Reactive MongoDB:用于与MongoDB的异步和响应式交互。

Spring Data Elasticsearch (Access+Driver):用于与Elasticsearch搜索和分析引擎交互。

Spring Data for Apache Cassandra:用于与Apache Cassandra数据库交互。

Spring Data Reactive for Apache Cassandra:用于与Cassandra的异步和响应式交互。

Spring Data Couchbase:用于与Couchbase数据库交互。

Spring Data Reactive Couchbase:用于与Couchbase的异步和响应式交互。

Spring Data Neo4j:用于与Neo4j图形数据库交互。

7.消息传递和异步通信的工具

Spring Integration:提供企业集成模式的支持,实现消息驱动的架构。

Spring for RabbitMQ:用于集成RabbitMQ消息队列。

Spring for RabbitMQ Streams:支持RabbitMQ Streams的消息传递。

Spring for Apache Kafka:用于集成Apache Kafka消息系统。

Spring for Apache Kafka Streams:支持Kafka Streams的数据流处理。

Spring for Apache ActiveMQ 5:用于集成ActiveMQ 5消息代理。

Spring for Apache ActiveMQ Artemis:用于ActiveMQ Artemis消息代理的集成。

Spring for Apache Pulsar:用于集成Apache Pulsar消息系统。

Spring for Apache Pulsar (Reactive):支持Apache Pulsar的响应式消息处理。

WebSocket:用于构建实时Web应用,支持WebSocket协议。

RSocket:用于二进制流和异步消息传递的协议,适合微服务架构。

Apache Camel:提供规则路由和消息转换的集成框架。

Solace PubSub+:用于集成Solace PubSub+事件流管理。

9.io

在这里插入图片描述

Spring Batch:用于批处理应用程序开发的框架,支持批量操作和任务调度。

Validation:用于数据验证,通常应用于数据输入验证和对象验证。

Java Mail Sender:用于发送电子邮件的支持库,简化邮件功能的实现。

Quartz Scheduler:强大的作业调度库,用于调度和管理作业执行。

Spring Cache Abstraction:提供缓存抽象层,支持多种缓存实现,优化性能。

Spring Shell:用于创建命令行程序的工具,支持交互式Shell功能。

10.运维和监控

在这里插入图片描述

Spring Boot Actuator:提供监控和管理生产环境应用的功能,如健康检查和指标。

CycloneDX SBOM support:用于支持生成软件材料清单(SBOM),提升供应链安全。

codecentric's Spring Boot Admin (Client):用于集成Spring Boot Admin,用于管理和监控Spring Boot应用。

codecentric's Spring Boot Admin (Server):用于运行Spring Boot Admin服务器,集中管理多个Spring Boot应用。

Sentry:用于应用程序的实时异常监控和错误报告。

11.可观测性和监控

在这里插入图片描述

Datadog:云基础设施监控服务,提供日志管理和实时数据分析。

Dynatrace:应用性能管理(APM)工具,提供自动化运维和智能监控。

Influx:用于存储和查询时序数据的数据库。

Graphite:企业级监控和图形工具,适合实时数据可视化。

New Relic:APM工具,提供实时性能监控和分析。

OTLP for metrics:支持OpenTelemetry协议,用于标准化指标采集。

Prometheus:强大的开源监控系统,提供多维数据模型和查询语言。

Distributed Tracing:支持分布式跟踪,帮助分析分布式系统中的请求流。

Wavefront:针对企业的云监控和分析平台。

Zipkin:分布式追踪系统,用于收集和查找请求的延迟数据。

12.测试

在这里插入图片描述

Spring REST Docs:用于生成基于测试的API文档,帮助开发和维护RESTful服务。

Testcontainers:用于Java集成测试的库,支持在测试中使用Docker容器。

Contract Verifier:用于消费者驱动契约(CDC)测试,确保提供者和消费者之间的契约一致性。

Contract Stub Runner:用于在测试中运行契约的桩代码,模拟服务行为。

Embedded LDAP Server:用于在测试中嵌入和配置LDAP服务器,进行LDAP相关功能测试。

13.Spring Cloud

在这里插入图片描述

Spring Cloud
Cloud Bootstrap:初始化Spring Cloud应用的工具。
Function:支持函数式编程模型的组件。
Task:用于运行短生命周期任务的支持。

Spring Cloud Config
Config Client:从配置服务器获取配置信息。
Config Server:集中管理和分发配置。
Vault Configuration:集成HashiCorp Vault进行安全配置管理。
Apache Zookeeper Configuration:使用Zookeeper管理配置。
Consul Configuration:使用Consul管理配置。

Spring Cloud Discovery
Eureka Discovery Client:Eureka服务发现客户端。
Eureka Server:Eureka服务注册和发现服务器。
Apache Zookeeper Discovery:使用Zookeeper实现服务发现。
Consul Discovery:使用Consul实现服务发现。

Spring Cloud Routing
Gateway:基于流量的路由和筛选。
Reactive Gateway:支持异步编程模型的路由。
OpenFeign:简化服务间HTTP调用的声明性Web服务客户端。
Cloud LoadBalancer:客户端负载均衡。

Spring Cloud Circuit Breaker
Resilience4J:一种高效的断路器实现,增强服务稳定性。

Spring Cloud Messaging
Cloud Bus:用于在分布式系统中传播事件的机制。
Cloud Stream:用于简化消息驱动的微服务开发。

14.VMware Tanzu应用服务

用于支持云原生应用的开发和部署
在这里插入图片描述

Config Client (TAS):用于从Tanzu应用服务的配置服务器获取配置信息的客户端。

Service Registry (TAS):用于服务注册和发现的组件,帮助微服务相互发现和通信。

15.Microsoft Azure和Google Cloud平台集成

在这里插入图片描述

Microsoft Azure
Azure Support:提供对Azure服务的基础支持和集成。
Azure Active Directory:用于身份验证和授权服务,支持单点登录。
Azure Cosmos DB:与Azure的全局分布式数据库服务集成。
Azure Key Vault:用于管理和存储密钥、凭据和机密。
Azure Storage:用于集成Azure的存储解决方案。

Google Cloud
Google Cloud Support:提供对Google Cloud服务的基础支持和集成。
Google Cloud Messaging:用于实时消息传递服务的集成。
Google Cloud Storage:与Google Cloud存储服务集成。

16.AI

在这里插入图片描述

AI/向量数据库
Azure OpenAI:与Azure上的OpenAI服务集成。
Azure AI Search:用于增强搜索功能的Azure服务。
Amazon Bedrock:用于构建和部署生成式AI应用。
Apache Cassandra Vector Database:支持向量数据的存储和查询。
Chroma Vector Database:高性能向量数据库。
Elasticsearch Vector Database:扩展Elasticsearch以支持向量搜索。
Milvus Vector Database:专为向量数据而设计的开源数据库。
Mistral AI:AI 模型和应用的支持库。
MongoDB Atlas Vector Database:MongoDB的向量数据支持。
Neo4j Vector Database:图数据库与向量数据的集成。
Ollama:AI应用服务平台。
OpenAI:用于与OpenAI模型的集成。
Oracle Vector Database:Oracle的向量数据库支持。
PGvector Vector Database:PostgreSQL的向量数据扩展。
Pinecone Vector Database:用于向量相似性搜索的托管数据库。
PostgresML:在PostgreSQL中直接进行机器学习。
Redis Search and Query Vector Database:Redis的搜索和向量支持。
Stability AI:专注于生成AI模型与应用。
Transformers (ONNX) Embeddings:使用ONNX模型进行嵌入计算。
Vertex AI PaLM2:Google Cloud的AI平台,提供强大的模型支持。
Vertex AI Gemini:Google Cloud的高级机器学习服务。
Qdrant Vector Database:适合大规模向量数据的高性能引擎。
Typesense Vector Database:快速的开源向量搜索引擎。
Weaviate Vector Database:开源向量搜索引擎。
Timefold Solver:优化求解算法,适用于复杂问题。

一般选择

在这里插入图片描述
一般项目可以先选择这些依赖项

可以学习使用这些配置的方法

就可以快速构建一个应用

Spring Web:构建RESTful API,处理HTTP请求和响应。

Spring Boot DevTools:提供开发效率提升功能,如热部署和自动重启。

Spring Data JPA:使用关系型数据库进行数据存储和查询。

Spring REST Docs:生成基于测试的API文档,帮助维护接口文档。

Lombok:通过注解自动生成样板代码,减少重复工作,如getter和setter。

Spring Security:实现安全功能,提供用户认证和授权保护。

Spring Data MongoDB:如果使用非关系型数据库,提供MongoDB支持。

WebSocket:支持实时通信功能,适用于实时聊天或问答。

MySQL Driver:用于连接MySQL数据库,进行数据存取。

Spring Data Redis (Access + Driver):用于集成Redis,支持缓存机制提升性能。

Spring Boot Actuator:监控和管理应用的健康状况和性能指标。

点击创建

在这里插入图片描述
等待项目配置完成
在这里插入图片描述

生成了项目

以下是完整的项目文件
在这里插入图片描述

根目录
		build.gradle:Gradle构建脚本,定义项目依赖和构建任务。
		settings.gradle:Gradle设置文件,用于配置项目的相关信息。
		gradlew和gradlew.bat:Gradle包装器脚本,允许你在不安装Gradle的情况下使
		用它来构建项目。
		demo.iml:IDEA的项目文件,用于IDE配置。
		.gitignore:Git配置文件,指定哪些文件或目录不应该包含在版本控制中。
		HELP.md:通常提供项目帮助文档或说明(如果有的话)。


.idea目录
		gradle.xml, misc.xml, modules.xml, workspace.xml:IDEA生成的项目配置文件,包含了项目特定的IDE设置。

gradle/wrapper目录
		gradle-wrapper.jar:Gradle包装器的可执行JAR文件。
		gradle-wrapper.properties:配置文件,指定Gradle包装器的版本和下载地址。


src目录
		main目录
			java:包含Java源码。
			com/example/demo/DemoApplication.java:主应用程序入口类,通常带有@SpringBootApplication注解。
			resources:存放资源文件。
			static:存放静态资源,如CSS、JavaScript文件。
			templates:存放模板文件(如Thymeleaf模板)。
			application.properties:Spring Boot应用程序的配置属性文件。

	
	test目录
			java:包含测试代码。
			com/example/demo/DemoApplicationTests.java:用于编写测试用例。
其他
		外部库:项目中使用的所有外部依赖和库。
		临时文件和控制台:开发过程中生成的临时文件和控制台日志。

Gradle构建超时情况处理

由于网络,可能构建时候会很慢

1.打开

在这里插入图片描述
修改这个配置文件将他改为阿里云或者腾讯的地址

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://mirrors.aliyun.com/macports/distfiles/gradle/gradle-8.10.2-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists


阿里	https://mirrors.aliyun.com/macports/distfiles/gradle
腾讯	https://mirrors.aliyun.com/macports/distfiles/gradle

保存后刷新将开始下载

在这里插入图片描述

build.gradle文件

plugins {
    id 'java'  // 应用Java插件,启用Java编译功能
    id 'org.springframework.boot' version '3.3.4'  // 应用Spring Boot插件,指定Spring Boot版本
    id 'io.spring.dependency-management' version '1.1.6'  // 应用Spring的依赖管理插件,简化依赖版本管理
    id 'org.asciidoctor.jvm.convert' version '3.3.2'  // 应用Asciidoctor插件,用于生成文档
}

group = 'org.example'  // 定义项目的组ID
version = '0.0.1-SNAPSHOT'  // 定义项目版本

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(17)  // 设置Java工具链,使用Java 17版本
    }
}

configurations {
    compileOnly {  // 定义一个编译时只存在的配置
        extendsFrom annotationProcessor  // 扩展为依赖处理器
    }
}

repositories {
    mavenCentral()  // 指定使用Maven中央仓库管理依赖
}

ext {
    set('snippetsDir', file("build/generated-snippets"))  // 定义生成的代码片段目录
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-actuator'  // 添加Spring Boot Actuator依赖,以支持应用监控
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'  // 添加Spring Data JPA依赖,以支持JPA功能
    implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'  // 添加Spring Data MongoDB依赖,以支持MongoDB
    implementation 'org.springframework.boot:spring-boot-starter-data-redis'  // 添加Spring Data Redis依赖,以支持Redis
    implementation 'org.springframework.boot:spring-boot-starter-security'  // 添加Spring Security依赖,以支持安全功能
    implementation 'org.springframework.boot:spring-boot-starter-web'  // 添加Spring Web依赖,以支持Web功能
    implementation 'org.springframework.boot:spring-boot-starter-websocket'  // 添加WebSocket支持
    compileOnly 'org.projectlombok:lombok'  // 添加Lombok依赖,仅在编译时使用
    developmentOnly 'org.springframework.boot:spring-boot-devtools'  // 添加开发工具依赖,仅在开发环境中使用
    runtimeOnly 'com.mysql:mysql-connector-j'  // 添加MySQL连接器,仅在运行时需要
    annotationProcessor 'org.projectlombok:lombok'  // 添加Lombok注解处理器
    testImplementation 'org.springframework.boot:spring-boot-starter-test'  // 添加Spring Boot测试依赖
    testImplementation 'org.springframework.restdocs:spring-restdocs-mockmvc'  // 添加Spring REST Docs以生成API文档
    testImplementation 'org.springframework.security:spring-security-test'  // 添加Spring Security测试支持
    testRuntimeOnly 'org.junit.platform:junit-platform-launcher'  // 添加JUnit平台测试支持
}

tasks.named('test') {
    outputs.dir snippetsDir  // 将生成的代码片段的输出目录设置为snippetsDir
    useJUnitPlatform()  // 使用JUnit平台
}

tasks.named('asciidoctor') {
    inputs.dir snippetsDir  // 将snippetsDir作为输入目录
    dependsOn test  // 确保在生成文档前执行测试
}


构建错误

在这里插入图片描述
一般是因为jdk版本

需要打开设置,下载一个17 版本

然后重新加载
在这里插入图片描述
在这里插入图片描述
项目构建完成

如果没用配置数据库先将依赖注释,等以后再引入

在这里插入图片描述

设置端口

在这里插入图片描述

随后启动

访问端口
在这里插入图片描述

;