文章目录
SpringBoot快速入门
1、概述
SpringBoot为什么出来:简化配置文件,就好像Spring的升级版,原来很多东西需要手动配置,现在只需要自动配置!
以前SSM框架中需要配置好多文件,太麻烦了,而SpringBoot梳理了SSM框架中麻烦的地方,所有东西都不用自己去配置,自动生成
有种半自动换成全自动的感觉~
- 各种.xml配置文件
- tomcat 都要配置
- lib依赖 也需要管理
SpringBoot中以上统统不用配置即可运行!
2、编写第一个SpringBoot程序
2.1、使用IDEA构建一个SpringBoot项目
2.2、填写Maven项目基本信息
2.3、勾选启动器(Spring Web) 如果你勾选了这个,相当于帮你自动配置好了Spring和SpringMVC!包括Tomcat~
2.4、项目构建完成
最终完成图如下:
2.5、写一个程序测试一下
- 一定要在 SpringBoot 主启动类的同级或者子级目录下,新建包!否则是识别不了的;
- 新建一个
controller
包 - 在这个包下新建一个
HelloController
/*
Description:controller控制视图跳转
Author:32259
Time:2020三月2020/3/313:04
*/
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello(){
return "hello,springboot!";
}
}
-
启动主启动类,访问测试:
http://localhost:8080/hello
结果:
OK,我们没有什么都没有配置,只不过是启动了一个类,怎么就开启了一个服务了呢? -
思考一个问题:我们没有配置tomcat、 没有配置servlet、没有配置spring,这个怎么生效的?
3、理解研究SpringBoot原理
3.1、小彩蛋:不一样的Logo
研究之前,不知道大家有没有发现我启动时那个Logo和大家的有点不一样呢?
我改成了我名字的字母全拼,大家想要改的话很简单~
- 在resources目录下新建一个banner.txt文件
- 打开banner生成网站(传送门)生成自己想要的Logo字体
- 复制这个字体到你的banner文件内
好了,那你自己的专属Logo就完成啦!
3.2、它怎么启动的?
每一个新建的SpringBoot项目中,都有一个主启动类
package com.gang;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//系统自己生成的
@SpringBootApplication // 只要标注了它就代表是SpringBoot的应用
public class HelloSpringbootApplication {
// 你以为启动一个方法,没想到开启了一个服务
public static void main(String[] args) {
// Spring的启动类,通过run方法来具体执行
SpringApplication.run(HelloSpringbootApplication.class, args);
}
}
- 一个注解:
@SpringBootApplication
- 一个类:
SpringApplication
那么思考一个问题?
- 我们可以把它删掉自己写一个主启动类呢?
- 当然可以
好,我们把上面的主启动类删除,重新写一个主启动类
package com.gang;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/*
Description:主启动类
Author:32259
Time:2020三月2020/3/412:31
*/
//这是我自己写的
@SpringBootApplication
public class GangApplicationStart {
public static void main(String[] args) {
SpringApplication.run(GangApplicationStart.class,args);
}
}
不一样的依赖
前面说到:我们没有配置tomcat、 没有配置servlet、没有配置spring,这个怎么生效的?
我们看一下它默认自带的pom.xml文件
- 父依赖
<!-- 父依赖
spring-boot-starter-xx 启动类
-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!--我们按住ctrl键点进源码后发现 里面还有一个父依赖-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.5.RELEASE</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>
<!--再点进去,发现到头了,给大家截个图-->
<!-- 父依赖作用分析
1、自动帮你管理依赖,里面包含了几乎常用的所有依赖,如果你需要的依赖在这里面有,你就不要配置了,如果没有再配置
2、插件和资源过滤的自动管理;
-->
这里面包含了几乎普通项目要用的所有依赖!
- 启动器
<!--依赖-->
<!--在这里写的依赖都不需要版本号,只要在父依赖中有!-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- spring-boot-starter-xx 场景启动器;导入对应场景所需要的类
会自动帮你导入封装了这个场景所需要需要的依赖
-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
我们发现这里的依赖都没有版本号,原因是父依赖中都有了,他会自动给你匹配父依赖中的版本!
当然,有的人就想用自己的版本,那你可以把版本号加上,这就是表示用自己(导入)的依赖,但是为了以防版本不兼容的问题,除非父依赖中没有这个以来,否则不推荐这么做~
大家看出这两种的区别了吗?
没写版本号他就会自动向上匹配父依赖中的版本,有了他就不会匹配了~
🆗,又到了说再见的时候啦~