简介
Spring Boot 用来简化Spring应用开发的框架,是整个Spring技术栈的一个大整合。约定大于配置,去繁从简,just run就能创建一个独立的、产品级别的应用。
背景:J2EE笨重的开发、繁多的配置、低下的开发效率、复杂的部署流程、第三方技术集成难度大。
解决:Spring全家桶时代。
- Spring boot --> J2EE一站式解决方案
- Spring Cloud --> 分布式整体解决方案
优点
- 快速创建独立运行的Spring项目以及与主流框架集成
- 使用嵌入式的Servlet容器,应用无需打成WAR包
- starters自动依赖与版本控制
- 大量的自动配置、简化开发、也可修改默认值
- 无需配置xml,无代码生成,开箱即用
- 准生成环境的运行时应用监控
- 与云计算的天然继承
微服务
微服务:一种架构风格
一个应用应该是一组小型服务:通过HTTP的方式进行通信
每一个功能元素最终都是一个可独立替换和独立升级的软件单元。
SpringBoot HelloWorld
功能要求:浏览器发送hello请求,服务器接受请求并处理,响应HelloWorld字符串;
1、创建一个maven工程
2、导入spring-boot相关依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
3、编写主程序:启动SpringBoot应用
package com.atguigu;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication //标注一个主程序,说明这是一个Spring Boot应用
public class HelloWorldMainApplication {
public static void main(String[] args) {
//Spring应用启动起来
SpringApplication.run(HelloWorldMainApplication.class, args);
}
}
4、编写相关Controller、Service
package com.atguigu.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HelloController {
@ResponseBody
@RequestMapping("/hello")
public String hello() {
return "Hello World";
}
}
5、运行主程序进行测试
6、简化部署
添加插件
<!-- 这个插件,可以将应用打包成一个可执行的jar包 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.5.9.RELEASE</version>
</plugin>
</plugins>
</build>
得到jar包spring-boot-01-helloworld-1.0-SNAPSHOT.jar
,在终端使用命令运行这个jar即可开启服务
java -jar spring-boot-01-helloworld-1.0-SNAPSHOT.jar
HelloWorld探究
1、父项目
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
打开spring-boot-starter-parent是下面这个项目,它是版本的仲裁中心:
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.9.RELEASE</version>
后面我们导入依赖不需要写版本了,除非没有在dependencies标签的依赖
2、我们导入了一个web的依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
spring-boot-starter-web:
- spring-boot-starter:spring-boot场景启动器,帮我们导入了web模块正常运行所依赖的组件
Spring Boot 将所有功能场景都抽取出来,做成一个个的starters(启动器),只需要在项目中引入这些starter,相关场景的所有依赖都会导入进来。要什么功能有什么功能。
3、主程序类、主入口类
package com.atguigu;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication //标注一个主程序,说明这是一个Spring Boot应用
public class HelloWorldMainApplication {
public static void main(String[] args) {
//Spring应用启动起来
SpringApplication.run(HelloWorldMainApplication.class, args);
}
}
@SpringBootApplication:SpringBootApplication标注在某个类上说明这个类是SpringBoot的主配置类,SpringBoot就应该运行这个类的main方法。
使用向导快速创建springboot项目
IDEA支持使用Spring的项目创建向导迅速创建一个SpringBoot项目:
选择我们需要的模块,向导会联网创建SpringBoot项目;
默认生成的SpringBoot项目:
- 主程序已经生成好了,我们只需要我们自己的逻辑
- resources文件夹中目录结构
- static:保存所有的静态资源;js、css、images
- templates:保存所有的模版页面
- applications.properties:SpringBoot应用的配置文件,可以修改一些默认设置。