SpringBoot2核心技术与响应式编程
学习是通过B站上的尚硅谷发布的雷丰阳老师所讲的视频学习的(第一次学习,如有错误请指正)。
学习文档地址https://www.yuque.com/atguigu/springboot
SpringBoot2是基于Java8的。
1.Spring与SpringBoot
Spring是一个生态圈,我们学习过的Spring框架就是Spring Farmework。Spring是非常庞大的,可以帮助我们解决很多问题。他基本覆盖了我们所接触的所有技术。
我们在学习Spring框架时,整合Spring,SpringMVC,Mybaits时需要大量的配置文件,配置的非常繁琐,那么简化配置的SpringBoot就应运而生了。SpringBoot的底层就是SpringFarmework。所以SpringBoot可以帮我们整合Spring这个生态圈。(快速创建生产级别的Spring应用)
SpringBoot优点
1.创建独立的Spring应用
2.内嵌web服务器(内部自带TomCat,Jetty,Undertow)(程序自动变成jar包)
3.提供starter依赖,简化构建配置,(就是Maven依赖)减少版本冲突
4.自动配置Spring以及第三方功能(无代码生成,无需编写XML)
5.提供生产级别的监控,健康检查以及外部优化配置
2.SpringBoot2入门
系统要求
Java8兼容Java14
Maven3.3+
使用Idea用Mvaen构建一个SpringBoot项目(有更加简洁的方式,先用这个)
0.先创建一个Maven项目
1.在maven文件文件中导入
//固定写法SpringBoot版本2.5.3
<parent>
<groupId>org.springframework.boot</groupId>
//依赖管理,可以不用写依赖的版本号几乎声明了常用依赖的所有版本号
//自动版本仲裁
//这里的starter是一组依赖的集合,只要starter整个开发场景依赖全部都引入
//starter-*引入某种场景
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.3</version>
</parent>
//那我们想要指定版本号的时候怎么办呢,如修改mysql驱动版本如下
//还需要在dependencies里需要加上
<properties>
<mysql.version>5.1.43</mysql.version>
</properties>
//开发web场景spring-boot-starter-web
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
2.编写SpringBoot程序主程序类(入口)
/*
主程序类,所有启动的入口
@SpringBootApplication表示这是一个SpringBoot应用
MainApplication这个就是类名,可以自己定义
*/
@SpringBootApplication
public class MainApplication {
public static void main(String[] args) {
//我觉得这里就是SpingBoot要跑哪个类为主类,并且MainApplication.class,args这两个参数必不可少
SpringApplication.run(MainApplication.class,args);
}
}
3.写一个controller程序
//RestController相当于ResponseBody+controller俩个注解的结合
@RestController
public class HelloController {
@RequestMapping("/hello")
public String helloWorld(){
return "Hello, SpringBoot World";
}
}
4.因为前文提到过SpringBoot内置了TomCat.所以我们可以在MainApplication类中执行程序,然后访问http://localhost:8080/hello,就可以在网页上显示Hello, SpringBoot World。
5.那如果我们想要修改SpringBoot的一些默认配置怎么办呢,我们可以在resources文件下创建一个application.properties文件里面修改就可以了(这个文件名是固定的哦,在这个文件里修改所有配置)如server.port=8888,就是修改TomCat的端口号。
3.自动配置
1.引入依赖
2.自动配置
在进行注解扫描的时候,在@SpringBootApplication主程序的同样的包里就可以进行包扫描,但是不同包下不能扫描到。
那我们非要把程序放在不在主程序的包下呢?
1.我们可以在@SpringBootApplication(scanBasePackages=“com.XXX”)就可以扫描与主程序不在同一包下的程序了。
2.我们还可以使用@ComponentScan("")来进行包扫描,但是我们就不能使用@SpringBootApplication注解了,我们要使用下面代码来进行了。
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan("包名")
在自动装配中,SpingBoot都会给我们配置一个默认值,我们可以在application.properties来进行默认值的修改。
默认的配置最终都是映射到某一个类上。配置文件的值都会绑定到每个类上,类会在容器中创建对象。
上文提到过的starter,我们只有引入哪个场景,这个场景才会开启自动配置(按照我们的需求来进行自动配置,而不是SpringBoot全部都会自动配置上)SpringBoot的自动配置功能都在Spring-boot-autoconfigure包里面。