目录
一、引言
1. 什么是 Spring Boot
Spring Boot 是一个开源的 Java 框架,用于构建独立的、生产就绪的基于 Java 的应用程序。它是Spring 框架的一种简化和快速开发方式,旨在帮助开发者更容易地构建现代的 Java 应用程序,减少了很多传统 Spring 框架配置的复杂性。
Spring Boot 的主要特点包括:
1. 自动配置:Spring Boot 提供了许多默认配置,因此您可以快速启动应用程序,而无需手动配置大量选项。这些配置根据您的项目中所使用的依赖库自动应用。
2. 内嵌式Web服务器:Spring Boot 内置了多个 Web 服务器(如Tomcat、Jetty、Undertow),使您能够轻松创建自包含的 Web 应用程序,而无需部署到外部的 Web 容器。
3. 生产就绪:Spring Boot 提供了用于监控、管理和部署应用程序的各种功能,包括健康检查、远程配置、度量、日志记录等。
4. 简化的依赖管理:Spring Boot 通过 Starter 模块简化了 Maven 或 Gradle 构建文件中的依赖管理,让您更轻松地集成各种技术和库。
5. 集成测试:Spring Boot 支持集成测试,使开发者能够方便地编写测试用例来验证应用程序的功能。
Spring Boot 的目标是让开发者更加专注于应用程序的业务逻辑,而不是花费太多时间配置和集成各种框架和库。它广泛用于构建Web应用程序、RESTful服务、微服务架构等各种类型的Java应用程序。
总的来说,Spring Boot 内置了 Web 有关的内容,帮助开发者们轻松地构建 Web 应用程序,而无需过多的配置和代码。
在这里不过多赘述,如果你想了解更多有关 Spring Boot 的内容,请参考如下链接:
Spring Boot 中文文档:这是一个非官方的中文文档,包含了 Spring Boot 的基本概念、使用方法、配置属性、常见问题等。
【知乎】什么是springboot?:这是一个知乎专栏的文章,介绍了 Spring Boot 的由来、特性、优势和与 Spring 的关系等。
2. 为什么选择 Spring Boot
最受 Java 开发者喜好的框架当属 Spring,Spring 也成为了在 Java EE 开发中真正意义上的标准,但是随着新技术的发展,脚本语言大行其道的时代(Node JS,Ruby,Groovy,Scala等),Java EE 使用 Spring 逐渐变得笨重起来,大量的 XML 文件存在与项目中,繁琐的配置,整合第三方框架的配置问题,低下的开发效率和部署效率等等问题。
这些问题在不断的社区反馈下,Spring 团队也开发出了相应的框架:Spring Boot。Spring Boot 可以说是至少近 5 年来 Spring 乃至整个 Java 社区最有影响力的项目之一,也被人看作是:Java EE开发的颠覆者!
Spring Boot 继承了 Spring 的优点,并新增了一些新功能和特性:
1. 它遵循“约定优于配置”的原则,减少了繁琐的 XML 配置,提供了一系列的 starter 依赖,可以快速集成常用的框架和组件。有时候我们只需要使用默认配置即可。
2. 它内嵌了 Servlet 容器,降低了对环境的要求,这下可以直接用 java -jar xxx.jar 来启动了。
3. 它自动配置了 Spring 的各种功能和组件,根据项目中的类路径的 jar 包/类,为 jar 包的类进行自动配置 Bean。
3. Spring Boot 的 “拓展”
除了这些基础内容外,还有许多与 Spring Boot 集成的开源框架和库,用于不同的用途。
Spring Boot 提供了许多可选组件和库,以帮助开发者构建各种类型的应用程序。以下是一些常见的Spring Boot组件和库:
模块/库 | 主要功能 |
---|---|
Spring Web | 构建Web应用程序和RESTful服务,包括控制器、视图解析、请求映射等功能 |
Spring Data | 简化数据访问和数据库集成,包括Spring Data JPA、Spring Data MongoDB等 |
Spring Security | 提供身份验证和授权的安全框架,可轻松集成到Spring Boot应用程序中 |
Thymeleaf | Java模板引擎,用于构建Web应用程序的前端视图层 |
MyBatis | 持久性框架,用于与数据库进行交互 |
Spring Boot Actuator | 监控和管理Spring Boot应用程序的组件,包括健康检查、远程配置、日志记录等 |
Spring Boot DevTools | 提高开发效率的工具,包括热部署、自动重启等 |
Spring Boot Test | 用于编写集成测试和单元测试的支持库 |
Spring Boot Data Redis | 与Redis数据库进行集成的库 |
Spring Boot Data Solr | 与Apache Solr搜索引擎进行集成的库 |
Spring Boot Data Elasticsearch | 与Elasticsearch搜索引擎进行集成的库 |
Spring Boot Data Cassandra | 与Apache Cassandra NoSQL数据库进行集成的库 |
Spring Boot Websocket | 支持WebSocket通信的库 |
Spring Boot Cloud | 用于构建微服务架构的库,包括Spring Cloud Config、Spring Cloud Eureka、Spring Cloud Zuul等 |
这些组件和库可以根据您的项目需求进行选择和集成,以简化开发和提供所需的功能。 Spring Boot的目标是让开发者更轻松地构建现代Java应用程序,同时提供了许多现成的工具和解决方案来减少开发工作。
二、开始
1. 使用 IDEA 快速创建项目
IDEA,启动!
使用 IDEA 专业版内置的 Spring Initializr 来创建 Spring Boot 工程。
* 类型请选择 Maven
点击下一步后,IDEA 为列出一些常见的依赖项,一般来说只需要导入四个即可:Lombok(快速注解处理器)、Spring Web(web 所需的内容)、JDBC API(与数据库连接的 API)、MySQL Driver(MySQL 数据库驱动)。
点击创建后,IDEA 会为你自动配置项目。
2. 常见的项目结构说明
待创建完项目后,默认的结构是这样的:
其中,DemoApplication(类名会自动处理为 “[项目名字]+Application”,不建议更改,不然会乱)即是你的 main 位置,启动项目时从这里开始运行。
Spring Boot 项目通常遵循一种标准的项目结构,这有助于组织和管理项目代码。
src/main/java:这个目录包含 Java 源代码文件,通常是项目的主要代码部分。你的应用程序的主要业务逻辑和 Spring 组件都在这里。
src/main/resources:该目录包含应用程序的配置文件、静态资源文件、模板文件等。常见的内容包括 application.properties 或 application.yml 配置文件、HTML 模板文件、静态 CSS 和 JavaScript 文件等。
src/main/resources/static:如果你的应用程序包含静态资源(如 CSS、JavaScript 文件),这个目录通常用于存放这些文件。
src/main/resources/templates:如果你使用模板引擎(如 Thymeleaf)来构建视图层,这个目录通常包含模板文件。
src/main/resources/application.properties 或 application.yml:这是应用程序的配置文件,包含各种配置属性,如数据库连接、端口号、日志级别等。
src/main/resources/application-{profile}.properties 或 application-{profile}.yml:针对不同的部署环境或配置文件,你可以创建不同的配置文件,其中{profile}表示不同的配置文件名称,如 application-dev.properties、application-prod.yml 等。
src/main/resources/static:这是存放静态资源文件(如 CSS、JavaScript、图片)的目录,这些文件可以被浏览器直接访问。
src/main/resources/templates:如果你使用模板引擎(如 Thymeleaf)来创建视图层,这个目录通常包含 HTML 模板文件。
src/test:这是测试代码的根目录。通常分为以下两个子目录:
src/test/java:包含单元测试和集成测试的 Java 源代码文件。
src/test/resources:包含测试相关的配置文件、测试数据等。
target:这是构建工具(如 Maven 或 Gradle)生成的编译输出目录。包括编译的.class 文件、打包的 JAR 文件等。
pom.xml(Maven 项目)或 build.gradle(Gradle 项目):这些文件是项目构建工具的配置文件,定义了项目的依赖、插件和其他构建设置。
这个标准的项目结构有助于项目的组织和维护,使开发人员能够快速找到代码和资源文件,同时也符合 Spring Boot 的最佳实践。
3. 常见的包和模块
在 Spring Boot 项目中,main 应用程序的项目结构通常包括一些常见的包和模块,如控制器、服务、数据访问对象(DAO)、实体等。
在 com.example.demo 右击选择新建 -> 软件包。
包/模块 | 主要功能 |
---|---|
controller | 包含控制器类,用于处理 HTTP 请求和请求映射 |
service | 包含服务类,实现业务逻辑 |
mapper(或 dao) | 包含数据访问对象(DAO)或存储库接口,用于与数据库或其他数据源交互 |
entity | 包含实体类,用于表示数据模型 |
config | 包含应用程序配置类,配置 Spring、数据库、安全等 |
utils | 包含实用工具类,用于处理通用功能和辅助方法 |