文章目录
SSM基础
学习SpringBoot之前必须要熟悉Spring,SpingBoot不是一个完全重新写的东西,他是基于Spring来开发的,有很多默认的配置由SpringBoot为我们配置了,并且SpringBoot有自动配置的功能,有很多依赖我们甚至不需要再写版本号了,SpringBoot已经帮助我们默认集成了
SSM的基础在这里
MyBatis笔记(从零到一)
Spring5笔记(配置和零配置)
SpringMVC笔记(从零搭建一个web项目)
SSM整合(搭建一个Web脚手架)
第一个SpringBoot项目(Maven)
Spring为我们提供了一键生成项目骨架的网址
在此之前,我们主要通过Maven Archetype 来快速生成Maven项目,项目原型相对简陋,对各种IDE的支持也不太友好。然而通过Spring官方提供的Spring Initializr 来构建Maven项目,它不仅完美支持IDEA和Eclipse,而且能自动生成启动类和单元测试代码,给开发人员带来极大的便利。
使用官网构建(目前Eclipse只能用官网构建)
打开 Spring Initializr,我选择了夜间模式所以是黑色的
下面是添加依赖,点击出弹窗后可以进行搜索
移除不想要的依赖,也可以在生成之后手动修改pom.xml文件移除
配置好了之后点击生成项目就会把配置的项目下载下来,在线预览能在线预览项目的整体结构和生成的文件内容,SHARE会生成一个有你配置信息的链接,你可以分享给别人来看你的配置
在线预览的效果
下载下来是一个压缩包,解压后然后使用相应的IDE打开就行,IDEA用Import Project打开,一路下一步就完事
使用IDEA构建(其实也是内置的官网链接)
1)创建一个新的项目
2)选择Spring Initializr
3)然后出来的接面就跟官网的选项一样了,就不多介绍了,配置好以后下一步
4)配置依赖
5)设置项目名称,然后点Finish就算创建完成了
解决Maven下载太慢
先把Maven的中央仓库配置成国内的
这里有配置 Maven笔记(从配置仓库开始)
然后配置IDEA的maven,我是用自己下载的maven,也可以直接改IDEA内置的maven的配置文件
然后Apply然后OK就完事
打开项目后也可这么进去改
启动!
构建好的项目什么都不用管,直接启动就完事
直接访问localhost:8080
成功启动了,而且能正常访问,错误页面是因为我们根本就没有写任何代码和页面,所以才跳转到这个错误页面
写个controller试试
新建一个HelloController
直接使用注解开发
@RestController
public class HelloController {
@GetMapping("hello")
public String hello(){
return "hello SpringBoot";
}
}
就这么简单,这个过程中没有写任何配置文件,一个Controller就写好了
这回使用maven的package打包成jar包来运行,双击package打包
然后使用 java -jar helloworld.jar 来运行
看到如下结果就是运行成功了
访问 http://localhost:8080/hello
成功访问!
约定大于配置
约定大于配置不需要多说了,近些年框架都朝着这个方向走的,不止Spring,还有ASP.NET等
因为有约定,所以我们不需要写配置文件,但是我们需要把controller、dao、service包都建到程序主入口的同级目录下,创建到其他目录是不能自动识别的,这就是约定,我这个项目的主入口是HelloworldApplication.java
所以我的包创建成这样
自定义banner
我们可以修改SpringBoot启动时候的这个动画,他们就管这个叫banner,中文翻译是横幅
那么如何修改呢,还是有个约定,在resources目录下创建一个banner.txt,SpringBoot就会自动帮助我们接管这个文件,其他的名字可不行
我复制来了一个佛祖,直接粘贴到这个txt文件中,启动项目的时候,控制台就能输出出来了
// _ooOoo_ //
// o8888888o //
// 88" . "88 //
// (| ^_^ |) //
// O\ = /O //
// ____/`---'\____ //
// .' \\| |// `. //
// / \\||| : |||// \ //
// / _||||| -:- |||||- \ //
// | | \\\ - /// | | //
// | \_| ''\---/'' | | //
// \ .-\__ `-` ___/-. / //
// ___`. .' /--.--\ `. . ___ //
// ."" '< `.___\_<|>_/___.' >'"". //
// | | : `- \`.;`\ _ /`;.`/ - ` : | | //
// \ \ `-. \_ __\ /__ _/ .-` / / //
// ========`-.____`-.___\_____/___.-`____.-'======== //
// `=---=' //
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //
// 佛祖保佑 永不宕机 永无BUG //
这算是个彩蛋吧,也是约定的一种体现,我是在这个地址找的
https://www.bootschool.net/ascii
或者百度SpringBoot banner就有很多网址
原理初探
这个文件很重要 spring.factories
,这个文件里记录了所有SpringBoot的自动配置类,SpringBoot启动的时候会加载这个文件中的所有配置类,但是不一定生效,需要判断条件是否成立,只要导入了对应的starter,就有对应的启动器了,有了启动器,我们自动装配就会生效,然后就会配置成功
1.SpringBoot在启动的时候,从类路径 /META-INF/spring.factories 下获取指定的值
2.将这些自动配置的类导入容器,自动配置就会生效,帮助我们进行自动配置
3.以前需要我们手动配置的东西,现在SpringBoot帮助我们做了
4.整个JavaEE,解决方案和自动配置的东西都在spring-boot-autoconfigure-2.2.6.RELEASE.jar这个包下
5.他会把所有需要导入的组件,以类名的方式返回,这些组件就会被添加到容器
6.容器中也会存在非常多的xxxAutoConfiguration的文件,就是这些类给容器中导入了这个场景需要的所有组件,并自动配置,@Configuration
7.有了自动配置类,免去了我们手动编写配置文件的工作