当前位置: 首页 > news >正文

SpringBoot学习路径--SpringBoot的简单介绍和项目搭建

        在 Java 开发领域,Spring 框架无疑是一座举足轻重的里程碑。而 Spring Boot 的出现,更是让 Java 开发变得前所未有的简单高效。本文将带你全面了解 Spring Boot,从基础概念到实战操作,助你快速上手这一强大的开发框架。

一、Spring Boot 是什么?

Spring Boot 是简化 Spring 应用开发的框架,它就像一个功能强大的脚手架,整合了整个 Spring 技术栈,为 J2EE 开发提供了一站式解决方案。

它的优点不胜枚举:

  • 能快速创建独立运行的 Spring 项目,且可与主流框架轻松集成
  • 使用嵌入式的 Servlet 容器,应用无需打成 war 包,比如内嵌的 Tomcat,极大简化了部署流程
  • 提供 Starters 自动依赖和版本控制,不用再为依赖版本冲突头疼
  • 大量的自动装配功能简化开发,同时也支持修改默认值
  • 无需配置 XML,无代码生成,真正实现开箱即用
  • 具备准生产环境的运行时应用监控能力
  • 与云计算天然集成,适应现代部署需求

二、微服务与 Spring Boot

在了解 Spring Boot 的同时,我们不得不提微服务架构,因为 Spring Boot 是构建微服务的理想选择。

微服务的概念

微服务是一种架构风格,它将应用拆分成一个个小型的、具有独立业务功能的服务。每个服务都有自己的处理和轻量通讯机制,可部署在单个或多个服务器上,是一种松耦合、有界上下文的面向服务架构。

一个应用由一组小型服务组成,服务之间通过 HTTP 方式互通。这与单体应用(ALL IN ONE)形成鲜明对比,在微服务架构中,每一个功能元素都是可独立替换和独立升级的软件单元。

微服务的优缺点

优点

  • 每个微服务聚焦特定业务功能,规模小而精
  • 可由 2 到 5 人的小团队单独开发
  • 松耦合,在开发和部署阶段都保持独立
  • 支持使用不同语言开发
  • 易于集成自动部署,新成员能更快投入生产
  • 便于开发人员理解、修改和维护
  • 可根据需求灵活扩展
  • 能部署在中低端配置的服务上
  • 易于和第三方集成
  • 每个微服务可拥有自己的存储,也可使用统一数据库

缺点

  • 可能带来过多的操作成本
  • 开发工作量可能加倍
  • 分布式系统管理复杂
  • 服务量增加后,问题跟踪和管理难度上升

三、环境准备

要开始使用 Spring Boot,需准备以下环境:

  • JDK 1.8 及以上(Spring Boot 推荐 jdk1.7 及以上)
  • Maven 3.3 及以上版本
  • 开发工具:IntelliJ IDEA 2017 及以上、STS 等
  • Spring Boot 2.0.2.RELEASE(统一环境,基于 Spring5)

Maven 设置

在 maven 的 settings.xml 配置文件的 profiles 标签中添加如下内容:

<profile><id>jdk‐1.8</id><activation><activeByDefault>true</activeByDefault><jdk>1.8</jdk></activation><properties><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion></properties>
</profile>

IDEA 设置

在 IDEA 中,需正确配置 Maven 路径、用户设置文件和本地仓库等信息,确保开发环境与 Maven 配置一致。

四、Spring Boot HelloWorld 实战

接下来,我们通过一个简单的 HelloWorld 案例,感受 Spring Boot 的魅力。

步骤 1:创建 Maven 工程(jar 类型)

步骤 2:导入 Spring Boot 相关依赖

在 pom.xml 中添加:

<parent><groupId>org.springframework.boot</groupId><artifactId>spring‐boot‐starter‐parent</artifactId><version>1.5.9.RELEASE</version>
</parent>
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring‐boot‐starter‐web</artifactId></dependency>
</dependencies>

步骤 3:编写主程序,启动 Spring Boot 应用

步骤 4:编写 Controller

@Controller
public class HelloController {@ResponseBody@RequestMapping("/hello")public String hello(){return "Hello World!";}
}

步骤 5:运行主程序测试

运行主程序后,在浏览器中访问http://localhost:8080/hello,即可看到 "Hello World!" 的响应。

步骤 6:简化部署

在 pom.xml 中添加插件:

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring‐boot‐maven‐plugin</artifactId></plugin></plugins>
</build>

将应用打成 jar 包后,可直接使用java -jar命令执行。

五、配置文件详解

Spring Boot 的配置文件是其灵活性的重要体现,下面我们深入了解。

热部署

Spring 提供了 spring-boot-devtools 模块支持热部署,引入依赖即可:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional>
</dependency>

修改代码或配置文件后,按 ctrl+f9 即可实现热部署。

配置文件类型

Spring Boot 使用全局配置文件,文件名固定为:

  • application.properties
  • application.yml

配置文件的作用是修改 Spring Boot 自动配置的默认值。

YAML 以数据为中心,比 json、xml 更适合做配置文件。例如配置端口:

server:port: 8081

而 XML 则需要这样写:

<server><port>8081</port>
</server>

YAML 语法

  • 基本语法:k:(空格) v 表示键值对(空格必须有)
  • 以空格缩进控制层级关系,左对齐的为同一层级
  • 属性和值大小写敏感

值的写法

  • 字面量:直接写,字符串默认不加单引号或双引号。双引号不转义特殊字符,单引号会转义
  • 对象、Map:下一行写属性和值,仍用 k:v 方式
  • 数组(List、Set):用 - 值表示元素,也可使用行内写法

配置文件值注入

通过 @ConfigurationProperties 注解可将配置文件中的属性映射到组件中:

@Component
@ConfigurationProperties(prefix = "person")
public class Person {private String lastName;private Integer age;// 其他属性及getter、setter
}

导入配置文件处理器可获得提示:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring‐boot‐configuration‐processor</artifactId><optional>true</optional>
</dependency>

@Value 和 @ConfigurationProperties 的区别:

  • @ConfigurationProperties 支持批量注入、松散绑定、JSR303 数据校验和复杂类型封装
  • @Value 需一个个指定,支持 SpEL,不支持松散绑定和 JSR303 校验

六、自动配置原理

Spring Boot 的自动配置是其核心功能,原理如下:

  1. Spring Boot 启动时加载主配置类,@EnableAutoConfiguration 开启自动配置
  2. @EnableAutoConfiguration 通过 EnableAutoConfigurationImportSelector 向容器导入组件
  3. 扫描类路径下 META-INF/spring.factories,获取 EnableAutoConfiguration 对应的值,作为自动配置类导入容器
  4. 每个自动配置类在一定条件下生效,通过 @Conditional 派生注解判断
  5. 生效的自动配置类向容器添加组件,组件属性从对应的 properties 类获取,而 properties 类与配置文件绑定

我们可通过设置 debug=true 打印自动配置报告,了解哪些自动配置类生效。

七、快速创建 Spring Boot 项目

使用 IDE 的 Spring Initializer 可快速创建项目:

  1. 选择所需模块,向导会联网创建项目
  2. 主程序已生成,只需编写业务逻辑
  3. resources 文件夹结构:
    • static:存放静态资源(js、css、images)
    • templates:存放模板页面(需使用 freemarker、thymeleaf 等模板引擎)
    • application.properties:配置文件

Spring Boot 的出现,无疑为 Java 开发者带来了福音。它简化了配置,提高了开发效率,让我们能更专注于业务逻辑的实现。希望本文能帮助你开启 Spring Boot 的学习之旅,在实际开发中感受它的强大之处。

http://www.lryc.cn/news/600019.html

相关文章:

  • c++注意点(13)----设计模式(抽象工厂)
  • 医疗器械:DFEMA和PFEMA
  • 从数据脱敏到SHAP解释:用Streamlit+XGBoost构建可复现的川崎病诊断系统
  • [NLP]一个完整的 UPF 文件示例
  • 文心4.5横向对标全球大模型:技术突破与应用前景深度分析
  • OSPF 路由协议多区域
  • 利用Dify实现应用日志关键信息提取之实践
  • 九联UNT413AS_晶晨S905L3S芯片_2+8G_安卓9.0_线刷固件包
  • RK3588 HDMI-RX 驱动、RGA 加速与 OpenCV GStreamer 支持完整指南
  • React性能优化终极指南:memo、useCallback、useMemo全解析
  • 堆(Heap)优先级队列(Priority Queue)
  • python基础:request模块简介与安装、基本使用,如何发送get请求响应数据,response属性与请求头
  • 《计算机组成原理与汇编语言程序设计》实验报告一 基本数字逻辑及汉字显示
  • 机器学习详解(28):LightGBM原理
  • Linux系统编程——进程
  • 腾讯云CodeBuddy+微信小程序:5分钟开发番茄小闹钟
  • IPv6,你开始使用了吗?
  • 学习日志18 python
  • 从入门到进阶:JavaScript 学习之路与实战技巧
  • [科普] 快速傅里叶变换(FFT)和离散傅里叶变换(DFT)的差异
  • JDK8保姆级安装教程
  • 微观低代码
  • 前端项目组成
  • 【DeepRare】疾病识别召回率100%
  • Linux parted问题:指定分区边界失效
  • HTTP响应状态码详解
  • Java 常用数据库详解
  • 数据结构 之 【排序】(递归实现快速排序)
  • 【补题】Codeforces Round 735 (Div. 2) B. Cobb
  • 中国移动融合企业网关H10G-13-中星微ZX296716处理器-破解教程