该博客主要借鉴了狂神发在微信的博客,按照他上课的步骤细化的
什么是Springboot
一个javaweb的开发框架,和SpringMVC类似,对比其他javaweb框架的好处,官方说是简化开发,约定大于配置, you can “just run”,能迅速的开发web应用,几行代码开发一个http接口
所有的技术框架的发展似乎都遵循了一条主线规律:从一个复杂应用场景 衍生 一种规范框架,人们只需要进行各种配置而不需要自己去实现它,这时候强大的配置功能成了优点;发展到一定程度之后,人们根据实际生产应用情况,选取其中实用功能和设计精华,重构出一些轻量级的框架;之后为了提高开发效率,嫌弃原先的各类配置过于麻烦,于是开始提倡“约定大于配置”,进而衍生出一些一站式的解决方案。
是的这就是Java企业级应用->J2EE->spring->springboot的过程。
Spring Boot 基于 Spring 开发,Spirng Boot 本身并不提供 Spring 框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于 Spring 框架的应用程序。也就是说,它并不是用来替代 Spring 的解决方案,而是和 Spring 框架紧密结合用于提升 Spring 开发者体验的工具。Spring Boot 以约定大于配置的核心思想,默认帮我们进行了很多设置,多数 Spring Boot 应用只需要很少的 Spring 配置。同时它集成了大量常用的第三方库配置(例如 Redis、MongoDB、Jpa、RabbitMQ、Quartz 等等),Spring Boot 应用中这些第三方库几乎可以零配置的开箱即用
简单来说就是SpringBoot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架
Spring Boot的主要优点:
- 为所有Spring开发者更快的入门
- 开箱即用,提供各种默认配置来简化项目配置
- 内嵌式容器简化Web项目
- 没有冗余代码生成和XML配置的要求
第一个Springboot程序
项目结构分析
程序主入口:java / BuildFromIdeaApplication (运行它就是启动项目)
核心配置文件:resources / application.properties
单元测试:test / BuildFromIdeaApplicationTests
分析 :pom.xml
<dependencies>
<!-- web场景启动器 :集成tomcat、dispatcherServlet、xml.....-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- springboot单元测试 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- 打包插件 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.7.RELEASE</version>
<configuration>
<mainClass>com.tesla.BuildFromIdeaApplication</mainClass>
</configuration>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
- 所有springboot 依赖 都使用的开头:spring-boot-starter
方式一:利用官网创建项目
1、springboot 首页底部 选择 spring initialzr
- 选择springboot 版本 带有
GA
( 通用稳定) - springboot 标签带有
snapshot
(快照 )不建议使用
2、配置创建项目
- java版本:我的jdk是1.8 所以选择 8
- 打包方式 : 默认jar包
- 添加依赖:spring web
- 选择generate 下载
3、下载到自定义的路径 —》解压
4、打开IDEA,File —》 close project —》 回到欢迎首页 —》选择 import project
5、等待依赖下载完成,并删除删除 help.md 、 .gitignore 、 mvnw 、 mvnw.cmd 文件(在项目名文件下)让他看起来更像一个maven项目,其实不删也可以
6、找到程序主入口,并在其同级目录下建包
7、编写controller 测试代码运行
@RestController
public class MyController {
@RequestMapping("/hello")
public String firstFromWebsite(){
return "hello,spring boot!";
}
}
方式二:使用IDEA 创建项目
IDEA 实际上集成了官网
准备工作
- JDK :1.8.0_192
- Maven:3.8.2
- Springboots:2.6.1 (带有GA 的最新版)
开发工具:
IDEA
开始创建
1、打开IDEA file —》 new project —》 Spring Initialzr —》custom:https://start.aliyun.com/ (这里选择阿里的镜像,否则直接连官网会下载得很慢!!!)
2、自定义 artifact 和 name 、description等,package的值最好就设置为二级包名即可 (狂神的建议)
我的JDK是1.8 的,所以java version选择 8
注意:
artifact 只能用小写字母表示,出现大写字母会报错
3、添加 spring web 依赖
- 也可以后期在 pom. xml 中导入 spring-boot-starter-web 依赖
4、删除 help.md 、 .gitignore 、 mvnw 、 mvnw.cmd 文件(在项目名文件下)让他看起来更像一个maven项目,其实不删也可以
5、创建controller 并编写
@Controller
@RequestMapping("/h")
public class MyController {
@GetMapping("/hello")
@ResponseBody
public String buildFromIdea(){
return "hello! springboot";
}
}
6、启动 BuildFromIdeaApplication,并成功运行
在浏览器输入localhost:8080/h/hello ,得到输出
修改Tomcat 端口
- 在 resources 下 application.properties
#修改端口号
server.port=8081
启动项目,在控制台查看修改成功
自定义Banner
-
在 resources 目录下新建 banner.txt(注意查看 txt 文件上有标志:表示已被识别到)
-
加入之后重启
-
运行项目,在控制台查看修改成功
将项目打成 jar 包
- maven projects:lifecycle -》 package
- 进入jar 包所在的文件夹,cmd 运行
- 执行jar 包 java -jar 项目包名(java -jar bulidFromWebsite-0.0.1-SNAPSHOT.jar)
项目照样可以运行,在浏览器也能看到输出的结果
方式三
1、创建一个maven项目
2、导入springboot包(来自官方文档https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html#getting-started.first-application.pom)
<!--直接复制到最外层即可-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.2</version>
</parent>
start - parent
3、导入web依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
4、在java下创建包和类(com.tesla.ApplicationMain)
//SpringBootApplication说明了这个程序是springboot
@SpringBootApplication
public class ApplicationMain {
public static void main(String[] args) {
//表明了入口,并且还有入口函数
SpringApplication.run(ApplicationMain.class,args);
}
}
5、编写controller
6、编写配置 (resources/ application.properties)
更多详细配置见官方文档:Common Application Properties (spring.io)
7、spring还可以简化部署(create an executable jar)
- 打成一个jar 包,放入pom.xml(使用官方给的插件,可以实现服务器等的打包)
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
- 然后选择 clean + package
- 在文件夹中找到项目下的 target 目录,然后cmd java -jar +项目名.jar
- 即可执行
注意:
- cmd 记得取消快速编辑模式 (右键-》属性-》取消快速编辑模式)