起步
创建项目
在IDEA中选择File->New->Project->Spring Initializr,勾选Web/Spring Web。或者File->New->Module,创建一个Maven项目。
pom.xml
根目录的pom.xml
应该是如下内容:
<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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.2</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.xuranus</groupId>
<artifactId>springdemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springdemo</name>
<description>springdemo</description>
<properties>
<java.version>11</java.version>
</properties>
<dependencies>
<!--SpringBoot Web项目起步依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<!--SpringBoot 测试起步依赖,默认有,删除需要同时删除test文件夹-->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<build>
<plugins>
<!--SpringBoot项目打包依赖-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
spring-boot-starter-parent
定义了项目的父级结构,SpringBoot相关组件无需手动配置,他们的版本号都被spring-boot-starter-parent
管理着,可以在IDEA中Ctrl+鼠标查看组件版本号。对于想替换的组件,在dependencies
中覆盖。
目录结构
项目创建完成后,目录结构如下:src/main/java/com/xxxx/xxx/ # SpringBoot项目目录
- SpringDemoApplication.java # SpringBoot启动入口
src/main/resources/
- static/ # 防止网页静态文件,如*.html,*.js,*.css
- templates/ # tymeleaf模板文件
- application.properties # SpringBoot核心配置文件
src/test/java/com/xxx/xxx/ # 测试文件
target/ # 编译后的文件
pom.xml # maven项目配置
Application类
SpringDemoApplication.java
是SpringBoot项目入口,必须有@SpringBootApplication
注解,用于开启Spring自动配置。项目代码必须放到Application类所在目录或下级目录,才能被Spring容器扫描到并托管。
// Springboot核心注解,用于开启Spring自动配置 |
Controller
Spring中的Controller用于标记HTTP路由,并在其中实现对每次请求的处理。Controller类需要在类上标记@Controller
。
路由以方法定义,并打上响应注解。
@GetMapping
:只接受GET请求@PostMapping
:只接受POST请求@RequestMapping
:接受GET和POST请求@ResponseBody
:返回是字符串或者JSON,如果不写会默认返回对应模板
// IndexController.java |
配置文件
application.properties
作为SpringBoot唯一的配置文件,可以在其中设置所有配置,无论是Redis,MySQL的连接参数,还是端口号,上下文路径,无需像SpringMVC中在各处做复杂的配置,SpringBoot将它们全集中于此处。
一般它的形式如下:# 内嵌tomcat端口号
server.port=8080
# servelet上下文路径
server.servlet.context-path=/
YAML和YML
application.properties
可以用application.yaml
或者application.yml
配置文件替代。*.yml
或者*.yaml
文件是另一种形式的配置文件,可以有层级的表示出相关配置,上文配置文件用application.yml
来写等价于这种形式:server:
port: 8080
servlet:
context-path: /
需要这种层级的配置文件需要注:
- 意冒号是半角字符,冒号后有一个空格
- 配置条目末尾要注意没有空格,否则空格也会被识别为字符
- 配置中的字符串不需要写引号
- 当
application.properties
和application.yml
同时存在,会优先使用application.properties
自定义配置项
对于用户自定义的配置,如项目是一个通用的学校的管理系统,只要在在学校的名称和人数上做特别配置。用户配置也可以写在SpringBoot配置文件中:# 用户自定义配置
school:
name: NEU
studentNumber: 1000
有两种方式读取配置文件:
- 配置类
新建一个配置类SchoolConfig
,声明@Component
注解,将它托管给Spring容器。@ConfigurationProperties(prefix = "school")
指定它是一个配置类,且从"school"
的条目中读取同名的成员变量。补全getter和setter。// SchoolConfig.java
//托管给Spring
//配置类
public class SchoolConfig {
private String name;
private int studentNumber;
// getter & setter
public int getStudentNumber() { return studentNumber;}
public String getName() { return name; }
public void setName(String name) { this.name = name;}
public void setStudentNumber(int studentNumber) { this.studentNumber = studentNumber;}
}
在项目启动后,可以用@Autowired
自动实例化该类,拿到它的成员变量。例:// IndexController.java
public Map<String, Object> schoolInfo() {
Map<String,Object> response = new HashMap<>();
response.put("schoolName", schoolConfig.getName());
response.put("studentNum", schoolConfig.getStudentNumber());
return response;
}
这种方法可以直接将一类配置作为一个Bean读取,适合多个配置一组的场景。
@Value
注解
第二种自定义配置读取的方法是用@Value
注解直接将配置注入到变量中。这种方法不再要求变量和配置同名,适用于读取零散的单个配置。// IndexController.java
private String schoolName;
private int studentNum;
public Map<String, Object> schoolInfo() {
Map<String,Object> response = new HashMap<>();
response.put("schoolName", schoolName);
response.put("studentNum", studentNum);
return response;
}
多环境配置
在开发过程中往往用到三种环境:开发环境,测试环境,生产环境。各个环境用到的配置文件也不一样,SpringBoot支持预设多种环境下的配置文件,按照application-XXX.properties
来命名。一般项目需要配置三个环境下的配置:application-dev.properties
,application-test.properties
,application-release.properties
。
而application.properties
还是需要存在的,用它指明当前使用的配置:spring.profiles.active=dev # 当前使用dev配置,将会读取application-dev.properties中的配置
MyBatis
<dependencies> |