此文写给刚刚开始接触 Spring Boot 的 Java 开发者
虽然你是在极度碎片化的知识海洋内看到这篇文章,但在阅读这篇文章之前需要了解以下知识:
Spring Framework 目前可以说是企业级 Java 开发的标准,在 Java 生态中有着举足轻重的地位。Spring Framework 作为基础的 Web 开发框架,需要大量第三方框架配合进行应用开发,例如 MyBatis、Hibernate、Shiro、Freemarker 等,随着 Spring 生态的发展和企业级应用日趋复杂的现状,通过 Spring Framework 进行开发时需要进行大量的配置以便完成对其他框架的集成,业务比较简单的项目中甚至可能出现配置文件比代码还要多的情况。
Spring Boot 在这种背景下诞生,一是为了降低 Spring Framework 与其他框架的集成复杂度,二是为了更好的支持分布式和云原生开发,Spring Boot 便是 Spring 团队另一力作 Spring Cloud (分布式开发框架) 的基础。
开始今天的正题,Spring Boot 项目依赖于 Maven 或 Gradle,这里我们使用 Maven,首先我们创建一个 Maven 项目,在前置知识点部分我们已经默认看到这里的你已经掌握了 Maven 的基本使用,这里我们不再详细描述。
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.2</version> </parent>
spring-boot-starter-parent
主要提供默认依赖,在使用 Maven 时引入依赖需要显式指定 version
,在引入 spring-boot-starter-parent
后,最显而易见的用户便是不再需要指定版本。
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
starter 在 Spring Boot 中相当于模块,在没有 starter 之前,需要开发者自行维护依赖关系和版本,同时自行完成于 Spring Framework 的集成,极大概率出现版本兼容等问题,Spring Boot 便是通过 starter 整合依赖并提供默认配置来简化依赖管理,在加入上述配置后我们便可以通过 mvn dependency:tree 查看依赖,仅仅通过一个配置便引入了 N 个 jar 包。
src/main/java
下创建 package,同时创建一个 Java 类作为启动类,后续所有需要 Spring 管理的代码都需要卸载启动类同级的包或者子包下。package com.example.spring; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; @SpringBootApplication public class SpringExampleStarter { public static void main(String[] args) { SpringApplication.run(SpringExampleStarter.class, args); } }
第 9-11 行便是启动代码,默认使用内嵌的 Tomcat 容器启动在 8080 端口应用。完成以上代码后便可以启动应用了,但是因为没有任何逻辑,所以也只能在控制台看到启动成功的提示而已,我们添加一个接口来验证。
package com.example.spring; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("test") public class TestController { @GetMapping("hello") public String hello(){ return "Hello Spring Boot"; } }