目录
4、创建一个 Spring MVC 的 Spring BootController
1、简介
1.1 Spring Boot 简介
springboot是spring家族中的一个全新框架,用来简化spring程序的创建和开发过程。在以往我们通过SpringMVC+Spring+Mybatis框架进行开发的时候,我们需要配置web.xml,spring配置,mybatis配置,然后整合在一起,而springboot抛弃了繁琐的xml配置过程,采用大量默认的配置来简化我们的spring开发过程。
SpringBoot化繁为简,使开发变得更加的简单迅速。
1.2 特性
- 能够快速创建基于spring的程序
- 能够直接使用Java main方法启动内嵌的Tomcat服务器运行springboot程序,不需要部署war包
- 提供约定的starter POM来简化Maven配置,让Maven的配置变得简单
- 自动化配置,根据项目的Maven依赖配置,springboot自动配置spring、springmvc等
- 提供了程序的健康检查功能
- 基本可以完全不使用xml配合文件,采用注解配置
1.3 四大核心
自动配置、起步依赖、Actuator、命令行界面
2、优势
创建独立的 Spring 应用程序
直接嵌入 Tomcat、Jetty 或 Undertow(无需部署 WAR 文件)
提供自以为是的“入门”依赖项以简化您的构建配置
尽可能自动配置 Spring 和 3rd 方库
提供生产就绪功能,例如指标、健康检查和外部化配置
完全无需代码生成,无需 XML 配置
3、快速入门
3.1.新建项目
3.2.勾选Spring Web
经过以上步骤后就创建了如下结构的模块,它会帮我们自动生成一个 Application 类
在创建好的工程中不需要创建配置类 创建好的项目会自动生成其他的一些文件,而这些文件目前对我们来说没有任何作用,所以可以将这些文件删除。
可以删除的目录和文件如下:
- .mvn
- .gitignore
- HELP.md
- mvnw
- mvnw.cmd
3.3.创建Controller
package com.example.demo1105;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/hello")
public class Controller {
@RequestMapping("/")
public String index(){
return "Greetings Spring Boot!";
}
}
3.4.启动服务器
运行 SpringBoot 工程不需要使用本地的 Tomcat 和 插件,只运行项目包下的 Application 类,我们就可以在控制台看出如下信息:
通过上面的入门案例我们可以看到使用 SpringBoot 进行开发,使整个开发变得很简单。
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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>demo1105</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo1105</name>
<description>demo1105</description>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.6.13</spring-boot.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>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
<configuration>
<mainClass>com.example.demo1105.Demo1105Application</mainClass>
<skip>true</skip>
</configuration>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
4、创建一个 Spring MVC 的 Spring BootController
(1)创建SpringBootController 类
注意:新创建的类一定要位于 Application 同级目录或者下级目录,否则 SpringBoot 加载不到。
package com.example.demo1105.demos.web;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class SpringbootController {
@RequestMapping(value = "/springBoot/say")
public @ResponseBody String say(){
return "hello,springBoot!";
}
}
(2)启动Application类中的main方法
通过在控制台的输出,可以看到启动 SpringBoot 框架,会启动一个内嵌的 tomcat,端
口号为 8080,上下文根为空
(3)在浏览器中输入 http://localhost:8080/springBoot/say进行访问
5、分析
(1)spring-boot-starter-parent 是一个 Springboot 的父级依赖,开发 SpringBoot 程序都需
要继承该父级项目,它用来提供相关的 Maven 默认依赖,使用它之后,常用的 jar包依赖可以省去 version 配置
(2)Spring Boot 提供了一些默认的jar 包的依赖,可查看该父级依赖的 pom 文件
(3)如果不想使用某个默认的依赖版本,可以通过 pom.xml 文件的属性配置覆盖各个
依赖项,比如覆盖 Spring 版本:
(4) @SpringBootApplication 注解是 Spring Boot 项目的核心注解,主要作用是开启
Spring 自动配置,如果在 Application 类上去掉该注解,那么不会启动 SpringBoot程序
(5)main 方法是一个标准的 Java 程序的 main 方法,是boot项目启动运行的入口
(6)@Controller 及 @ResponseBody 依然是我们之前的 Spring MVC,因为 Spring Boot
的里面依然是使用我们的 Spring MVC + Spring + MyBatis 等框架
6、 核心配置文件格式
为每个环境创建一个配置文件,命名必须为 application-环境标识.properties|yml
(1).properties 文件(默认采用该文件)
通过修改 application.properties 配置文件,修改默认 tomcat 端口号及项目上下文件根:
#设置内嵌 Tomcat 端口号
server.port=9090
#配置项目上下文根
server.servlet.context-path=/003-springboot-port-context-path
(2) .yml 文件 :
yml 是一种 yaml 格式的配置文件,主要采用一定的空格、换行等格式排版进行配置。它能够直观的被计算机识别数据序列化格式,容易被人类阅读,yaml 类似于 xml,但是语法比 xml 简洁很多,值与前面的冒号配置项必须要有一个空格, yml 后缀也可以使用 yaml 后缀 。
注意:当两种格式配置文件同时存在时,使用的是.properties 配置文件。
7.常用注解
相关注解 | 说明 |
@ComponentScan | 用来自动扫描被这些注解标识的类,最终生成ioc容器里的bean,默认扫描范围是@ComponentScan注解所在配置类包及子包的类 |
@SpringBootConfiguration | 与@Configuration作用相同,都是用来声明当前类是一个配置类,这里表明是springboot主类使用的配置类 |
@EnableAutoConfiguration | 是springboot实现自动化配置的核心注解,通过这个注解把spring应用所需的bean注入容器中 |