创建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 版本
然后重新加载
项目构建完成
如果没用配置数据库先将依赖注释,等以后再引入
设置端口
随后启动
访问端口