SpringBoot是由Pivotal团队在2013年开始研发、2014年4月发布第一个版本的全新开源的轻量级框架。它基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。约定大于配置,去繁从简,just run就能创建一个独立的,产品级别的应用
背景:
J2EE笨重的开发、繁多的配置、低下的开发效率、复杂的部署流程、第三方技术集成难度大。
解决:
“Spring全家桶" 时代
Spring Boot → J2EE一站式解决方案
Spring Cloud → 分布式整体解决方案
Spring Boot 优点:
- 快速创建独立运行的Spring项目以及与主流框架集成
- 使用嵌入式的Servlet容器,应用无需打包WAR包
- starters自动依赖与版本控制
- 大量的自动配置,简化开发,也可修改默认值
- 无需配置XML,无代码生成,开箱即用
- 准生产环境的运行时应用监控
- 与云计算的天然集成
IDEA中配置maven:
File → Settings → Maven 配置成本机装好的maven地址
一个功能:浏览器发送hello请求,服务器接受请求并处理,响应HelloWorld字符串;
IDE都支持使用Spring的项目创建向导快速创建一个Spring Boot项目;
- GroupId
:定义了项目属于哪个组,举个例子,如果你的公司是xinxindai,有一个项目为accountCenter ,那么groupId就应该是com.xinxindai.accountCenter.
- ArtifactId
:该元素定义实际项目中的一个Maven项目(模块),推荐的做法是使用实际项目的名称作为artifactId的前缀。
- Version
:指定了项目的当前版本,SNAPSHOT意为快照,说明该项目还处于开发中,是不稳定的版本。
接下来选择需要的模块;向导会联网创建SpringBoot项目;自动生成SpringBoot项目相关pom文件中的需要导入的包,也会自动生成Application类。@SpringBootApplication详解
- Project name
:项目名
- Project location
:项目存放地址
创建成功如上图所示,Spring Boot 的基础结构共三个文件:
- src/main/java
程序开发以及主程序入口
- src/main/resources
配置文件
- src/test/java
测试程序
resources文件夹中目录结构:
- static
:保存所有静态资源;js css images;
- templates
:保存所有的模板页面;(Spring Boot默认jar包使用嵌入式的Tomcat,默认不支持JSP页面);可以使用模板引擎(freemarker、thymeleaf);
- application.properties
:Spring Boot应用的配置文件;可以修改一些默认设置;
另外, Spring Boot 建议的目录结果如下:
com
+- xinxindai
+- accountCenter
+- Application.java
|
+- model
| +- User.java
| +- UserInfo.java
|
+- service
| +- UserService.java
|
+- controller
| +- UserController.java
|
Application.java
建议放到根目录下面,主要用于做一些框架配置model
目录主要用于实体与数据访问层(Repository)service
层主要是业务类代码controller
负责页面访问控制/**
* @author xiaona
* @date 2019-12-09
*/
@RestController
public class HelloWorldController {
@RequestMapping("/hello")
public String hello(){
return "Hello World!";
}
}
@RestController
的意思就是 Controller 里面的方法都以 json 格式输出,不用再写什么 jackjson 配置的了!
打开浏览器访问 http://localhost:8080/hello,就可以看到效果了
<build>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
plugin>
plugins>
build>
将这个应用打成jar包,直接使用java.jar的命令进行执行;
父项目
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>1.5.10.RELEASEversion>
parent>
他的父项目是
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-dependenciesartifactId>
<version>1.5.10.RELEASEversion>
<relativePath>../../spring-boot-dependenciesrelativePath>
parent>
他来真正管理Spring Boot应用里面的所有依赖版本;
Spirng Boot的版本仲裁中心;以后我们导入依赖默认是不需要写版本;(没有在dependencies里面管理的依赖自然需要声明版本号)
启动器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
spring-boot-starter-web
spring-boot-starter
:spring-boot场景启动器;帮我们导入了web模块正常运行所依赖的组件;
Spring Boot将所有的功能场景都抽取出来,做成一个个的starters(启动器),只需要在项目里面引入这些starter相关场景的所有依赖都会导入进来,要用什么功能就导入什么场景的启动器
SpringBoot是企业级开发的整体整合解决方案,特别用于快速构建微服务应用,我们无需再配置tomcat,无需再写大量xml配置文件,使用 Spring Boot 可以非常方便、快速搭建项目,使我们不用关心框架之间的兼容性,适用版本等各种问题,我们想使用任何东西,仅仅添加一个配置就可以,旨在用最简单的方式让开发人员适应各种开发场景;