写在前头
本应该2月2号我去杭州找工作,因为疫情爆发不得不推迟行程,那在家没事干嘛呢?打游戏看电影,还不如学点技术出去和面试官吹牛皮。我第一次接触SpringBoot在黑马乐优商城,当然本篇是根据自己理解和菜不能再菜的写作水平给大家讲述一个不一样的SpringBoot。由于本人水平有限,有不对地方大家麻烦评论区指正。
学习目标
- 何为SpringBoot
- 为何学SpringBoot
- SpringBoot入门【到放弃】
- SpringBoot高级【到脱发】
- 研究原理
1.何为SpringBoot
1.1 学过SSM的童鞋们肯定知道Spring,其实要说它全名叫SpringFramework,也就是面试热点Spring框架。该框架可是伴随着一大批java程序员的成长,之前我自己还写过一个通用SSM空的项目,希望的是每次写新项目不用再搭一遍配置,直接复制修改。配过SSM童鞋应该知道一个标准的SSM项目,配配文件就得花大量时间,而且配置也只是微调一下,要整合其他技术框架(如velocity)时候又要开始配置,那都2020年了Spring有没有解决这个问题呢?当然我们能想到的,人家老外肯定写出了解决办法。
1.2 SpringBoot就是解决以上问题的一个新的框架,其实它也不能算新毕竟在SpringFramework基础上进行的改进,白话说(当然可以用于面试万金油)SpringBoot是搭建企业级项目的手脚架,主要就是搭建大型Spring项目,并尽量做到减少写XML配置,开箱即用,直接上手,专注业务代码的编写。
1.3 官方介绍,我用我那小学英语给大家勉强翻译一下
2.为何学SpringBoot
2.1 为了($ _ $)这个是现实,不过从技术的角度,是为了解决某种问题或者是业务。我们可以从JAVA说起,自从JAVA活跃在互联网的平台,没人敢质疑这门语言的爽点,比如GC机制、面向对象特性等等,但许多同行语言如PHP,Python他们在互联网行业也有发言权。JAVA转行PHP,Python他们总说java太笨重太臃肿太麻烦了,他们可能功能已经写好了,我们java还在构建项目、编写xml,管理各种库的相互依赖,一旦依赖出现问题你又开始头疼解决依赖问题,不然怎么有这句话JAVA代码一次编译,到处报错名句。
2.2 所以SpringBoot出现,无疑让JAVA程序员解放双手,更好的投入无限加班之中,呸是更好的投入业务上的功能需求上,所以有这时间配置XML还不如花点时间学习SpringBoot。
3.SpringBoot入门【到放弃】
这里我们使用SpringBoot快速搭建SSM,并完成CRUD操作。本文中只有查询,Demo有完整。
使用JAVA环境JDK1.8、集成工具IDEA2018.3、maven3.5+。
SpringBoot构建有两种方式,一种maven自己构建,第二种使用Spring Initializr。我们这里使用第一种方式,第二种无脑下一步可以自己体验一下。
3.1 不使用maven骨架创建空的maven项目NEXT
3.2 填写项目坐标NEXT
3.3 填写项目位置Finish,如果还有弹框直接点OK
3.4 最终项目结构
3.5 添加依赖,现在我们项目跟SpringBoot半毛钱关系没有,传统的SSM经常会发生依赖冲突,SpringBoot提供一个父工程专门管理依赖关系和版本,你只要指定父工程,就不用再考虑各种烦人依赖,就问你爽不爽!
修改pon.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.4.RELEASE</version>
</parent>
3.6 添加web启动器,解决完了依赖,接下来就是解决配置问题,要搭建SSM必不可少要配置web.xml、application.xml等等。SpringBoot提供了各种启动器,就是提供各种自动配置依赖,有了这些启动器你再也不用写那些各种XML。注意这里我们没有指定版本,因为父工程里已经管理了,就问你爽不爽!
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
3.7 编写启动类,不使用Tomcat来运行,那SpringBoot怎么启动,还记得我们第一次学JAVA怎么运行程序的?而且SpringBoot项目通常打包成jar包。不要问我没web容器怎么运行,因为它内嵌这些东西噢,所以你连配Tomcat机会都没有!
package net.csdn;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MainApplication {
public static void main(String[] args) {
SpringApplication.run(MainApplication.class,args);
}
}
3.8 接下来就是我们熟悉SSM开发流程,编写Controller
package net.csdn.demo.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello(){
return "hello spring boot!";
}
}
3.8 运行测试
控制台输出
D:\DevelopFiles\Java\jdk1.8.0_231\bin\java.exe -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true "-javaagent:D:\DevelopFiles\JetBrains\IntelliJ IDEA 2018.3.6\lib\idea_rt.jar=55957:D:\DevelopFiles\JetBrains\IntelliJ IDEA 2018.3.6\bin" -Dfile.encoding=UTF-8 -classpath D:\DevelopFiles\Java\jdk1.8.0_231\jre\lib\charsets.jar;D:\DevelopFiles\Java\jdk1.8.0_231\jre\lib\deploy.jar;D:\DevelopFiles\Java\jdk1.8.0_231\jre\lib\ext\access-bridge-64.jar;D:\DevelopFiles\Java\jdk1.8.0_231\jre\lib\ext\cldrdata.jar;D:\DevelopFiles\Java\jdk1.8.0_231\jre\lib\ext\dnsns.jar;D:\DevelopFiles\Java\jdk1.8.0_231\jre\lib\ext\jaccess.jar;D:\DevelopFiles\Java\jdk1.8.0_231\jre\lib\ext\jfxrt.jar;D:\DevelopFiles\Java\jdk1.8.0_231\jre\lib\ext\localedata.jar;D:\DevelopFiles\Java\jdk1.8.0_231\jre\lib\ext\nashorn.jar;D:\DevelopFiles\Java\jdk1.8.0_231\jre\lib\ext\sunec.jar;D:\DevelopFiles\Java\jdk1.8.0_231\jre\lib\ext\sunjce_provider.jar;D:\DevelopFiles\Java\jdk1.8.0_231\jre\lib\ext\sunmscapi.jar;D:\DevelopFiles\Java\jdk1.8.0_231\jre\lib\ext\sunpkcs11.jar;D:\DevelopFiles\Java\jdk1.8.0_231\jre\lib\ext\zipfs.jar;D:\DevelopFiles\Java\jdk1.8.0_231\jre\lib\javaws.jar;D:\DevelopFiles\Java\jdk1.8.0_231\jre\lib\jce.jar;D:\DevelopFiles\Java\jdk1.8.0_231\jre\lib\jfr.jar;D:\DevelopFiles\Java\jdk1.8.0_231\jre\lib\jfxswt.jar;