一、简介
1.1 Spring Boot
虽然Spring已经简化了很多开发过程,但是需要配置的东西还是很多很罗嗦,所以在Spring的基础上出现了Spring Boot这个新框架。
大多数Spring Boot应用只需要很少的配置即可,所以 能够起到更快开发的效果。
1.2 微服务
微服务是一种架构风格,要求把应用构建成一系列小服务的组合。
在过去使用单体应用架构,把所有的服务都封装在同一个war包内,但是如果要改动就需要全部重新部署应用war包。所以才出现了微服务架构,把每个功能独立出来,各个功能之间动态组合
二、IDEA快速使用Spring Boot
-
新建项目:选择 Spring Initializr ,然后正常填写项目的信息即可,然后选择下一步
-
在这个页面可以选择各种项目需要的依赖。如果想要创建的是一个web项目,则选择 Web->Spring Web
-
到此,一个项目就创建好了并且可以直接运行。在src中有一个自动创建出的java文件,这是启动项,是程序的入口,不能删不能改。之后要加入自己的其他代码,则所有的包、代码文件必须和启动项在同一个目录下
-
我们像在SpringMVC中一样创建一个请求处理器,然后不需要进行任何配置便可直接运行
package com.example.springbootstudy.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello() {
return "hello,world" ;
}
}
-
假设现在我们所作的就是一个服务了,那么我们可以将其进行打包成一个jar包:选择 IDEA右侧的Maven选项->生命周期->package 。这样项目就会自动打包成一个jar包放在target目录下。
-
获得这个jar包之后就相当于得到了一个可以独立运行的程序。打开命令行输入 java -jar jar包路径 便会自动执行这个程序。此时再次在浏览器输入url也能正常运行。最后打包的这个过程就是体现了微服务
三、一点点原理
启动器
SpringBoot的启动场景,会将所有的功能场景都变成一个个的启动器。比如spring-boot-starter-web就会自动导入web环境所有的依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
主程序
创建SpringBoot项目后自动生成的文件。
在类名之前有@SpringBootApplication注解,表明了这个类是SpringBoot的应用
在main方法中的SpringApplication.run()方法将SpringBoot应用启动。这个SpringApplication主要做了四件事:
- 推断应用是普通项目还是web项目
- 查找并加载所有可用初始化器,设置到initializers属性中
- 找出所有的应用程序监听器,设置到listeners属性中
- 推断并设置main方法的定义类,找到运行的主类
四、配置文件
4.1 简介
SpringBoot使用了一个全局配置文件,作用就是修改SpringBoot自动配置的默认值。当创建项目的时候会在resources目录下自动生成。
文件名固定叫做application,可以有两种格式:
- application.properties 语法:key=value
- application.yml 语法:key:空格 value
4.2 YAML
YAML和properties 都可以当作配置文件,但是更推荐使用YAML,因为properties 只能保存键值对,而YAML可以以多种形式进行存储,而且表达起来更清晰。
基本语法:
- 基本格式: key:空格 value
冒号之后一定一定要加空格!
name: xiaoming
- 对象
# 方式一:分行缩进写
student: #对象名
name: xiaoming # 缩进后,属性名: 空格 属性值
age: 21
# 方式二:行内写法
student: {name: xiaoming, age: 21}
- 数组
# 方式一:分行缩进写
pets: # 数组名:
- dog # 缩进后, - 空格 元素
- cat
- fish
# 方式二:行内写法
pets: [dog, cat, fish]
实体类赋值:
YAML的强大之处在于:可以直接给实体类赋值
- 在YAML配置文件中按照上述语法格式填写实体类的属性值,需要注意的是属性名一定要和实体类中的属性名保持一致
- 在实体类的类名之前加上@ConfigurationProperties(prefix = “YAML中的key名”)注解,其中的参数就是YAML配置文件中对应的key的名字。起到了将配置文件中的值和实体类对象进行绑定的作用
多环境配置切换:
在一个项目中可能会有多个环境可以选择,如果使用YAML作为配置文件则可以把不同的环境放在同一个文件中,用 —隔开
# 默认配置
server:
port: 8081
spring:
profiles:
active: dev # 选择想要的环境名
--- # 不同环境用---隔开
server:
port: 8082
spring:
profiles: dev # 环境名
---
server:
port: 8083
spring:
profiles: test