第一个 SpringBoot 应用程序
前面介绍了 SpringBoot,既然那么好用,我们自然先玩一下,演示前后分离中后端项目的 api 接口
1 创建项目
- 打开 IDEA,File -> new -> Project -> Spring Initializr,如下图所示
图 1.1
图 1.2
图 1.3
图 1.4
根据上图操作,一个SpringBoot 的项目就搭建起来了
2 项目目录结构
图 2.1
- gitignore:Git 过滤配置文件
- pom.xml:Maven 的依赖管理配置文件
- HelloSpringBootApplication.java:程序入口
- resources:资源文件目录
- static: 静态资源文件目录
- templates:模板资源文件目录
- application.properties:Spring Boot 的配置文件,实际开发中会替换成 YAML 语言配置(application.yml)
3 程序入口
当创建项目成功后,会自动在 /main/java/com.pky.hello.springboot 包下生成一个 HelloSpringbootApplication 的类,如下所示:
3.1 HelloSpringbootApplication
package com.pky.hello.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HelloSpringbootApplication {
public static void main(String[] args) {
SpringApplication.run(HelloSpringbootApplication.class, args);
}
}
- 启动类在 main 函数下调用 run 方法,这就是Spring Boot的入口。
3.2 工作原理
-
启动类使用 @SpringBootApplication 注解标识 ,该注解会自动去 maven 中读取每个 starter 中的 spring.factories 文件。
-
根据 spring.factories 配置 AutoConfigure 类
-
最后根据 @Conditional 注解的条件,进行自动配置并将 Bean 注入 Spring Context 中
4 pom.xml
自动生成的 pom.xml 文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.pky</groupId>
<artifactId>hello-spring-boot</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>hello-springboot</name>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
4.1 parent 标签
继承了 Spring Boot 的 Parent,表示我们是一个 Spring Boot 工程。
4.2 spring-boot-starter-web
包含了 spring-boot-starter, 还自动帮我们开启了 Web 支持,如 图 4.1 所示
图 4.1
5 API 接口
前后分离中,前端调用接口,后端只响应数据。然后前端项目拿到数据进行页面展示。
创建 controller 包并创建 LoginController 类来演示一下 SpringBoot 的神奇。
package com.pky.hello.springboot.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class LoginController {
@GetMapping(value = "login")
public String login() {
return "登录成功!";
}
}
启动 HelloSpringbootApplication 的 main() 方法,浏览器访问 ,浏览器显示如图 5.1 所示,一个 SpringBoot 的雏形就完成了。
图 5.1
6 神奇之处
- 没有配置 web.xml
- 没有配置 application.xml,Spring Boot 帮你配置了
- 没有配置 application-mvc.xml,Spring Boot 帮你配置了
- 没有配置 Tomcat,Spring Boot 内嵌了 Tomcat 容器