一 springBoot简介
简化Spring应用开发的一个框架
整个Spring技术栈的整合
J2EE开发的一站式解决
二 微服务
微服务 是一种架构风格
一个应用应该是一组小型服务;可以通过HTTP的方式进行互通;
每一个功能袁术最终都是一个可独立替换和独立升级的软件单元 ;
详见微服务文档
三 环境
JDK1.8
maven设置settings.xml
idea配置
四 Spring Boot HelloWorld
1.创建一个maven工程
2 导入spring Boot 相关依赖pom.xml
3.编写一个主程序xxx
@SpringBootApplication注解
写一个main方法
SpringApplication.run(xxx.class)
4.编写controller,service
5.运行主程序
6.简化部署
导入srping Boot的maven插件
五 HelloWorld探究
1 、pom文件
1 父项目
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
他的父项目(spring-boot-starter-parent的父项目)
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.1.RELEASE</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>
Spring Boot版本仲裁中心,以后我们导入依赖默认是不需要写版本号。
2启动器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
spring-boot-starter-web:
spring-boot-starter:srping-boot场景启动器 ;帮我们导入web模块正常运行的所依赖的组件。
Spring Boot将所有的应用场景都抽取出来,做成一个个starters(启动器),只需要在项目里引入这些starter,相关场景的所有依赖都会导入进来。要什么功能就导入什么场景的启动器。
2、主程序类,主入口类
@SpringBootApplication
public class WxApplication {
public static void main(String[] args) {
SpringApplication.run(WxApplication.class, args);
System.out.println("Spring Boot build SUCCESS!");
}
}
@SpringBootApplication:Spring Boot应用标注在某个类上说明这个类是SpringBoot的主配置类,SpringBoot就应该运行这个类的main方法来启动SpringBoot应用。
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
excludeFilters = {@Filter(
type = FilterType.CUSTOM,
classes = {TypeExcludeFilter.class}
), @Filter(
type = FilterType.CUSTOM,
classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {
@SpringBootConfiguration:Spring Boot的配置类
标注在某个类上,表示这是一个SpringBoot的配置类。
@Configuration:配置类上来标注这个注解
配置类----配置文件,配置类是容器的一个组件
@EnableAutoConfiguration:开启自动配置功能
以前我们需要自己配置的东西,Spring Boot帮我们自动配置。
@AutoConfigurationPackage
@Import({AutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {
@AutoConfigurationPackage:自动配置包
@Import({Registrar.class})
Spring的底层注解@import,给容器中导入一个组件,导入的组件有AutoConfigurationPackages.Registrar.class
将主配置类的所在包及下面所有子包里面的所有组件扫描到Spring容器。
@Import({AutoConfigurationImportSelector.class})
给容器导入组件
AutoConfigurationImportSelector:导入哪些组件的选择器
将所有需要导入的组件以全类名的方式返回,这些组件就会被添加到容器。
Spring Boot在启动的时候,会从类路径下META-INF/spring.factories中获取EnableAutoConfiguration指定的值,将这些值作为自动配置类导入到容器中,自动配置类就生效,帮我们进行自动配置工作;以前我们需要自己配置的东西,自动配置类都帮我们做好了。
J2EE整体整合解决方案和自动配置都在:
spring-boot-autoconfigure.jar下。
六 使用Spring Initializer快速创建Spring Boot项目
IDE都支持使用Spring的项目创建向导快速创建一个Spring Boot项目。
选择我们需要的模块,向导会联网创建Spring Boot项目。
默认生成的Spring Boot项目:
主程序已经生成好了,我们只需要我们自己的逻辑;
resources文件夹下目录结构:
static:保存所有的静态资源,css/js/images;
templates:保存所有的模板页面,(SpringBoot默认jar包使用嵌入的tomcat,默认不支持JSP页面),可以使用模板引擎(freemaker,thymeleaf)
七 配置-yaml简介
YAML:以数据为中心,比json、xml更适合做配置文件。
1、基本语法
k:(空格)v:表示一个键值对(空格必须有)
以空格的缩进来控制层级关系,只要是左对齐的一列数据,都是同一个层级
server:
port: 8081
ip: 10.20.151.117
属性和值都是大小写敏感的。
2、值的写法
字面量:普通的值(数字、字符串、布尔)
字符串默认不用加上单引号或者双引号
“”双引号:不会转义字符串里的特殊字符
name: “zhangsan \n lisi” 输出 zhangsan 换行 lisi
‘’单引号:会转义特殊字符,特殊字符最终知识一个普通的字符串数据
name: ‘zhangsan \n lisi’ 输出 zhangshan \n lisi
对象、map
对象的k: v 的方式
person:
name: neo
age: 20
行内写法:
person: {name: neo,age: 20}
数组(list、set)
用 -值来表示数组中的一个值
pets:
-cat
-dog
-pig
行内写法
pets: [cat,dog,pig]
配置文件值的获取
yml配置文件
person:
name: neo
age: 20
birth: 2000/01/01
isMarried: true;
maps: {k1: v1,k2: v2}
friends:
- lucy
- lily
dog:
name: tom
age: 2
javaBean
/**
* ConfigurationProperties:告诉SpringBoot将本类中的属性与配置文件内的相关配置一一对应起 来
*/
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String name;
private Integer age;
private Date birth;
private Map maps;
private List friends;
private Dog dog;
导入配置文件处理器
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
八 properties配置文件
九 ConfigurationProperties跟@Value的区别
ConfigurationProperties | @Value | |
---|---|---|
功能 | 批量注入配置文件中de的属性 | 一个个指定 |
松散语法 | 支持 | 不支持 |
SpEL | 不支持 | 支持 |
JSR303数据校验 | 支持 | 不支持 |
复杂类型封装 | 支持 | 不支持 |
说明:以上内容摘自于尚硅谷的Spirng Boot讲解视频。