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 的自动配置是其核心功能,原理如下:
- Spring Boot 启动时加载主配置类,@EnableAutoConfiguration 开启自动配置
- @EnableAutoConfiguration 通过 EnableAutoConfigurationImportSelector 向容器导入组件
- 扫描类路径下 META-INF/spring.factories,获取 EnableAutoConfiguration 对应的值,作为自动配置类导入容器
- 每个自动配置类在一定条件下生效,通过 @Conditional 派生注解判断
- 生效的自动配置类向容器添加组件,组件属性从对应的 properties 类获取,而 properties 类与配置文件绑定
我们可通过设置 debug=true 打印自动配置报告,了解哪些自动配置类生效。
七、快速创建 Spring Boot 项目
使用 IDE 的 Spring Initializer 可快速创建项目:
- 选择所需模块,向导会联网创建项目
- 主程序已生成,只需编写业务逻辑
- resources 文件夹结构:
- static:存放静态资源(js、css、images)
- templates:存放模板页面(需使用 freemarker、thymeleaf 等模板引擎)
- application.properties:配置文件
Spring Boot 的出现,无疑为 Java 开发者带来了福音。它简化了配置,提高了开发效率,让我们能更专注于业务逻辑的实现。希望本文能帮助你开启 Spring Boot 的学习之旅,在实际开发中感受它的强大之处。