1 SpringBoot简介
- SpringBoot简化Spring应用开发,约定大于配置,去繁从简,just run就能创建一个独立的,产品级别的应用。
- 背景:
- J2EE笨重的开发、繁多的配置、低下的开发效率、复杂的部署流程、第三方技术集成难度大。
- 解决:
- “Spring全家桶”时代。
- SpringBoot-->J2EE一站式解决方案。
- SpringCloud-->分布式整体解决方案。
- 优点:
- 快速创建独立运行的Spring项目以及与主流框架集成。
- 使用嵌入式的Servlet容器,应用无需打成war包。
- starters自动依赖和版本控制。
- 大量的自动配置,简化开发,也可以修改默认值。
- 无需配置XML,无代码生成,开箱即用。
- 准生产环境的运行时应用监控。
- 与云计算的天然集成。
2 微服务简介
- 2014年,Martin Fowler与James Lewis共同提出。
- 微服务是一种架构风格(服务微化)。
- 一个应用应该是一组小型服务,可以通过HTTP的方式进行互通。
- 单体应用:ALL IN ONE。
- 微服务:每一个功能元素最终都是一个可独立替换和独立升级的软件单元。
3 环境准备
- JDK1.8。
- Maven 3.x。
- IntelliJ IDEA 2019.3。
- SpringBoot 1.5.9.RELEASE。
- Maven设置:
- 给maven的settings.xml配置文件的profiles标签添加如下信息:
<profile> <id>jdk‐1.8</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.8</jdk> </activation> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> </properties> </profile>
4 SpringBoot-HelloWorld
4.1 创建Maven项目
- 略。
4.2 导入SpringBoot相关的依赖
<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>
4.3 编写主程序,用来启动SpringBoot应用
- 示例:
- HelloWorldMainApplication.java
package com.sunxiaping; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication //标注一个主程序类,说明这是一个SpringBoot应用 public class HelloWorldMainApplication { public static void main(String[] args) { //SpringBoot应用启动起来 SpringApplication.run(HelloWorldMainApplication.class,args); } }
4.3 编写相关的Controller
- 示例:
- HelloWorldController.java
package com.sunxiaping.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class HelloWorldController { @RequestMapping(value = "/hello") @ResponseBody public String hello() { return "helloWorld"; } }
4.4 运行主程序测试
- 略。
4.5 简化部署
- 在当前项目的pom.xml中添加如下的配置:
<!-- 这个插件,可以将应用打包成一个可执行的jar包--> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
- 将这个应用打成jar包,然后通过java -jar xxx.jar的命令进行执行。
5 HelloWorld探究
5.1 pom文件
5.1.1 父项目
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> </parent> 其父项目是 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>1.5.9.RELEASE</version> <relativePath>../../spring-boot-dependencies</relativePath> </parent> 它是真正管理SpringBoot应用中的所有依赖版本,可以称之为SpringBoot的版本仲裁中心。
所以以后我们导入依赖默认是不需要写版本的,但是如果版本仲裁中心没有的,当然需要写版本号了。
5.1.2 启动器
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
- spring-boot-starter:SpringBoot的场景启动器。
- spring-boot-starter-web:帮助我们导入了web模块正常运行所依赖的组件。
- SpringBoot将所有的功能场景都抽取出来,做成一个个的starters(启动器),所以我们只需要在项目里引入这些starter,相关场景的所有依赖都会导入进来。
- 要用什么功能就导入什么场景的启动器。