入门案例的需求
浏览器发送/hello的请求,响应控制器
步骤:
1️⃣创建Maven工程
2️⃣导入父项目
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.5</version>
</parent>
导入该依赖的原因是:
里面还有一个父项目,其中封装了一些基本开发所需要的依赖,包含版本
入门案例是一个简单的Web应用,我们需要导入对应的启动器
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
接下来要写一个主程序类
编写一个类,包结构为com.mjc.boot.
其中包含MainApplication
package com.mjc.boot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//告诉SpringBoot该类是一个SpringBoot应用
@SpringBootApplication
public class MainApplication {
//main方法
public static void main(String[] args) {
/*
*调用SpringApplication中的run方法
*/ SpringApplication.run(MainApplication.class,args);
}
}
其中注解@SpringBootApplication,要告诉SpringBoot这个应用是一个SpringBoot应用
在main方法里调用SpringApplication中的run方法,执行主程序的类文件
然后编写业务逻辑
这个简单的web应用只用到控制器就可
package com.mjc.boot.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
//代表返回的数据直接写给浏览器还不是跳转页面
@ResponseBody
//表名该类是一个控制器
@Controller
//有一个新注解(@RestController),包含了ResponseBody,Controller
public class HelloController {
//映射请求:浏览器发送hello请求
@RequestMapping("/hello")
public String handle01() {
return "Hello, spring boot 2!";
}
}
关于注解@Controller
告诉SpringBoot该类是一个控制器类
@ResponseBody是要将返回的数据写给浏览器,不是跳转页面
有一个新注解@RestController包含了上述两种注解
@RequestMapping是获取请求
这样一个入门案例就写完了运行主程序,localhost:8080/hello就可以将返回的数据打印到浏览器上
接下来对原理进行一下简单的剖析
1️⃣为什么 会是localhost:8080
因为导入的启动器里面封装了tomcat作为默认的服务器,默认的端口也是8080
2️⃣SpringBoot是自动装配,按需加载配置项
1.配置都是按需加载的,通过starter的场景引入,这个场景的自动配置才会开启
2.SpringBoot的所有的自动配置功能都在spring-boot-autoconfigure包里面
3️⃣依赖管理,依赖注入
SpringBoot将我们所用的几乎所有的依赖都封装起来了,我们只需要导入即可并且版本号也仲裁了,
我们也可以修改版本号
4️⃣各种配置都有默认值
例如
tomcat有默认端口,文件上传有默认大小等
可以通过application.properties来修改
1.默认配置最终都是映射到MultiPartProperties
2.配置文件的值最终都会绑定每一个类上,这个类会在容器中创建对象
5️⃣默认的包结构
主程序所在的包及其下面的所有子包里面的组件都会被默认扫描出来
无需以前的包扫描配置
如果想要改变扫描路径:@SpringBootApplication(scanBasePackages="包名")来提高包的层级结构
或者@ComPonentScan 指定扫描路径
因为SpringBootApplication中包含ComponentScan是不可重复的注解所以可以将SpringBootApplication换成其中包含的注解然后在ComPonentScan中指定扫描路径也可
**@SpringBootApplication等同于
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan
6️⃣自动配好SpringMVC
1.引入SpringMVC全套组件
2.自动发配好SpringMVC常用组件(功能)
7️⃣自动配好Web常用功能,如字符编码问题
1.SpringBoot帮我们配置好了所有web开发的场景
后续会继续增加内容