1、Spring Boot 简介
简化 Spring 应用开发的一个框架
整个 Spring 技术栈的一个大整合
J2EE 开发的一战式解决方案
2、微服务简介
2014,martin fowler
微服务:架构风格
一个应用应该是一组小型服务,可以通过 HTTP 的方式进行互通
单体应用:ALL IN ONE
每一个功能元素最终都是一个可独立替换和独立升级的软件单元!
3、环境准备
- JDK 1.8 及以上
- maven 3.x
- Spring Boot 1.5.9.RELEASE
- IDEA
4、Spring Boot HelloWorld
功能:浏览器发送 hello
请求,服务器接受请求并处理,响应 Hello World
字符串。
(1)创建一个 maven
工程
(2)导入 Spring Boot
相关依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<!-- 导入 Spring Boot 相关依赖 -->
<dependencies>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
(3)编写一个主程序应用,启动 Spring Boot
应用
package com.yanghui;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @author YH
* @SpringBootApplication 来标注一个主程序类,说明这是一个 Spring Boot 应用
*/
@SpringBootApplication
public class HelloWorldMainApplication {
public static void main(String[] args) {
/** Spring 应用启动起来 */
SpringApplication.run(HelloWorldMainApplication.class, args);
}
}
(4)编写 Controller
package com.yanghui.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* @author YH
*/
@Controller
public class HelloController {
@RequestMapping("/hello")
@ResponseBody
public String hello() {
return "Hello World!";
}
}
注意: Controller
必须要放在和启动类同包或者子包下面,否则会无法扫描到 Controller
,因为 Spring Boot
默认是只扫描同包以及子包的!
5、运行主程序开始测试
(1)运行主程序
(2)打开浏览器输入 URL
进行测试
6、简化部署
Spring Boot
可以直接将应用打成 jar
包,直接以 java -jar
的命令执行 jar
包!
(1)在 pom.xml
中导入插件
<build>
<plugins>
<!-- 这个插件可以将应用打包成一个可执行的 jar 包 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
(2)使用 maven
自带的功能
(3)运行结果
7、HelloWorld 探究
(1)父项目
结论:spring‐boot‐dependencies
才是真正管理 Spring Boot
应用里面的所有依赖版本的,以后我们导入依赖默认不需要写版本(当然,没有在里面声明的依赖自然还是需要写的)!
(2)启动器
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Spring Boot
将所有的功能场景都抽取出来,做成一个一个的 starters
(启动器),只需要在项目中引入这些 starter
,相关场景的所有依赖都会导入进来,要用什么功能就导入什么场景的启动器。
(3)主程序类
package com.yanghui;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @author YH
* @SpringBootApplication 来标注一个主程序类,说明这是一个 Spring Boot 应用
*/
@SpringBootApplication
public class HelloWorldMainApplication {
public static void main(String[] args) {
/** Spring 应用启动起来 */
SpringApplication.run(HelloWorldMainApplication.class, args);
}
}
@SpringBootApplication
:Spring Boot
应用标注在某个类上说明这个类是 Spring Boot
的主配置类,Spring Boot
就运行这个类的 main
方法来启动 Spring Boot
的应用。
我们点进 @SpringBootApplication
这个注解里面去:
SpringBootConfiguration
:标注在某个类上,表示这是一个Spring Boot
的配置类。注意:配置类也是Spring Boot
中的一个组件,分析源码就可以看见标注了@Component
这个注解。
@EnableAutoConfiguration
:开启自动配置功能,以前我们需要配置的东西,Spring Boot
帮我们自动配置,@EnableAutoConfiguration
这个注解告诉Spring Boot
开启自动配置功能,这样自动配置才能生效。