一、创建 Spring Boot 项目
-
启动IDEA,选择点击Creat New Project
-
在打开的New Project框里,左侧选择Spring Initializr,右侧顶部Project SDK栏选择是JDK版本,下面Choose starter service URL栏是用来查询 Spring Boot 的当前版本和组件的网站,默认提供了一个URL,是国外的,可能访问会失败,可以自己设置一个国内的地址,这样创建比较快,地址:
https://start.springboot.io
选择配置好后点击Next。
-
在打开的Spring Initializr Project Settings框里配置相关信息
Group:项目组织的标识符
Artifact:项目标识符。
Type:构建项目的方式
Language:编程语言
Packaging:默认打包方式
Java version:Java版本。
Version:项目版本号
Name:项目名称
Description:项目描述
Package:Java的包结构
设置好后点击Next。 -
进入选择Spring Boot版本和引入组件界面,
例如创建Spring Boot的Web项目,这儿选择Web,勾选 Spring Web ,创建 Web工程 ,选择好后点击Next。 -
进入配置项目名称和位置界面,完成后点击FINISH。
二、项目结构
项目结构图如下:
大体结构划分为4类,分别是:Java类文件、资源文件、测试类文件、pom文件
1. Java类文件
目录src/main/java下放的是Java类文件,最底层和项目名相同的目录下,会生成 Xxx(项目名)Application 的类,这个类是Spring Boot 的主程序,SpringBoot项目的启动入口类,该类的@SpringBootApplication
注解是SpringBoot核心注解,主要用于开启Spring自动配置,如果在 XxxApplication 类上去掉该注解,就不会启动 SpringBoot程序
2. 资源文件
目录src/main/resources下主要存放的是Spring Boot应用的配置文件
- static下存放的是静态资源,如图片、HTML、CSS、JavaScript等。
- templates下存放 Web 页面的模板文件,如Thymeleaf模板文件等。
- 新建项目的时候会默认创建一个application.properties配置文件,是个空文件,可进行一些需要的配置,存放程序的各种依赖模块的配置信息,如端口号等,该主配置的文件名不能更改,后缀名可以改为yml或yaml。
3. 测试文件
目录src/test/java下用于存放Spring Boot测试类文件,新建项目的时候会默认创建一个测试类,如果不需要该类,可以删除,删除时对应的也要删除pom文件里的依赖。
4. pom文件
项目中的pom.xml文件是Maven项目用于构建项目的重要组成部分。
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--Spring Boot 的父级依赖-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.6</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.gushi</groupId>
<artifactId>demo</artifactId>
<version>1.0.0</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<!--maven编译插件的JDK版本-->
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--SpringBoot框架web项目起步依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--SpringBoot框架测试起步依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<!--SpringBoot项目打包编译的插件-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
该pom文件中可以看到SpringBoot项目版本号、Java版本、默认依赖、SpringBoot项目打包编译的插件等。
三、写程序测试
新创建的类一定要位于 XxxApplication 同级目录或者下级目录,否则 SpringBoot 加载不到。
- 创建Controller
在 XxxApplication 的同级目录或者下级目录下创建一个Controller类,在类上面加入@Controller
注解,用在类上面,表示这个类是一个Controller,允许通过类路径扫描自动检测实现类,它通常是和基于注解@RequestMapping
的方法结合使用的。
package com.gushi.demo.web;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HelloController {
// @RequestMapping是将请求和处理请求的控制器方法关联起来,建立映射关系。
@RequestMapping(value = "/say")
public @ResponseBody String say(){ // @ResponseBody是将java对象转为json格式的数据。
return "Hello,SpringBoot!";
}
}
- 启动测试运行
XxxApplication 是主程序,可以看到有 main 方法,是项目启动入口,启动程序,在控制台可以看到:项目的端口是8080、使用的Web容器是Tomcat、写的say()的映射。
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.5.6)
2021-10-28 14:34:32.063 INFO 9616 --- [ main] com.gushi.demo.DemoApplication : Starting DemoApplication using Java 9.0.4 on DESKTOP-B9N7K9L with PID 9616 (E:\code\demo\target\classes started by 故是 in E:\code\demo)
2021-10-28 14:34:32.067 INFO 9616 --- [ main] com.gushi.demo.DemoApplication : No active profile set, falling back to default profiles: default
2021-10-28 14:34:32.826 INFO 9616 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2021-10-28 14:34:32.835 INFO 9616 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2021-10-28 14:34:32.835 INFO 9616 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.54]
2021-10-28 14:34:32.885 INFO 9616 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2021-10-28 14:34:32.885 INFO 9616 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 750 ms
2021-10-28 14:34:33.131 INFO 9616 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2021-10-28 14:34:33.140 INFO 9616 --- [ main] com.gushi.demo.DemoApplication : Started DemoApplication in 1.873 seconds (JVM running for 3.405)
在浏览器中输入URL,在页面就可以看到显示结果。