SpringBoot01_快速入门、配置
概念
- 是一个快速搭建Spring项目的工具、并不是对 Spring 功能上的增强,而是提供了一种快速使用 Spring 的方式
- 功能:
- 快速启动:内置了各种应用服务器,默认使用tomcat
- 自动配置:控制Springboot内部的程序哪些生效
- 依赖管理:自动管理JAR的版本
- 统一监控:监控服务的运行状态
入门案例
-
创建maven工程,导包pom.xml
-
设置父工程
<!--springboot工程需要继承的父工程--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.8.RELEASE</version> </parent>
-
导入项目依赖
<!--web开发的起步依赖(集成了spring+springmvc)--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
-
-
定义controller层
@RestController public class HelloWorld { @RequestMapping("/hello") public String hello(){ return "hello SpringBoot"; } }
-
创建启动类
-
@SpringBootApplication 必须配置
-
SpringApplication.run(HelloApplication.class,args); 必须调用run
@SpringBootApplication public class HelloApplication { public static void main(String[] args) { SpringApplication.run(HelloApplication.class,args); } }
-
运行main方法启动SpringBoot,访问地址:localhost:8080/hello
小结:
SpringBoot在创建项目时,使用jar的打包方式。
SpringBoot的启动类,是项目入口,运行main方法就可以启动项目。
使用SpringBoot和Spring构建的项目,业务代码编写方式完全一样。
idea快捷创建SpingBoot
起步依赖原理
- 在spring-boot-starter-parent中定义了各种技术的版本信息,组合了一套最优搭配的技术版本。
- 在各种starter中,定义了完成该功能需要的坐标合集,其中大部分版本信息来自于父工程。
- 我们的工程继承parent,引入starter后,通过依赖传递,就可以简单方便获得需要的jar包,并且不会存在版本冲突等问题。
配置
-
spring工程的配置分类:
- POM配置
- Bean配置JavaConfig
- WEB配置
- 属性配置yml
-
springboot的配置文件
-
SpringBoot提供了2种配置文件类型:properties和yml/yaml
-
默认配置文件名称:application
-
在同一级目录下优先级为:properties > yml > yaml
-
properties配置类型:application.properties
#设置端口
server.port=8080
yml/yaml配置类型:application.yml application.yaml
server:
port: 8080
YAML文件格式
YAML全称是 YAML Ain’t Markup Language,YML文件是以数据为核心的,比传统的xml方式更加简洁。
YAML文件的扩展名可以使用.yml或者.yaml。
-
springboot默认会自动加载classpath:application.yml(同级目录及其子目录)
-
大小写敏感
-
使用 冒号+空格 分割key和value
-
使用 换行符+缩进 表现层级关系
-
数据对象
-
对象数据(map):键值对的集合
user: name: 小王 age: 18 #行内写法 person: {name: zhangsan}
-
列表数据
address: - beijing - chongqing #行内写法 address: [beijing,shanghai]
-
纯量:单个的、不可再分的值
msg1: 'hello \n world' #单引忽略转义字符 msg2: "hello \n world" #双引识别转义字符
-
参数引用
name: lisi person: name: ${name} # 引用上边定义的name值
-
读取配置内容的方式
-
@Value(${“配置文件的key”})
-
@Autowired注解Environment:程序启动时配置的环境变量,使用此方式获取
@Autowired private Environment env; eng.getProperty("配置文件的key")
-
@ConfigurationProperties(prefix = “person”) 把一组属性注入到一个对象中
@Component @ConfigurationProperties(prefix="person")//将person键的值注入到Person对象中 public class Person { private String name; private int age; (getter setter.........) } /* person: name: abc age: 18 */
profile多环境属性配置
-
profile用来完成在不同环境下,配置动态切换功能
-
profile配置方式
-
多profile文件方式:提供多个配置文件,每个代表一种环境。
- application-dev.properties/yml 开发环境
- application-test.properties/yml 测试环境
- application-pro.properties/yml 生产环境
-
yml多文档方式:在yml中使用 — 分隔不同配置
--- server: port:8081 spring: profiles:dev --- server: port:8082 spring: profiles:test --- spring: profiles: active:pro #激活pro
-
profile激活方式
-
配置文件:application.properties
#dev是环境名称,激活application-dev.properties spring.profiles.active=dev
-
虚拟机参数:Edit-Configuration,在VM options指定:-Dsrping.profiles.active=dev
-
命令行参数:java -jar xxx.jar --spring.profiles.active=dev
-
-
springboot启动多环境之后,会自动去查找application-{环境名称}.yml
内部配置加载顺序
-
Springboot程序启动时,会从以下位置加载配置文件:
- file:./config/:当前项目下的/config目录下
- file:./ :当前项目的根目
- classpath:/config/:classpath的/config目录
- classpath:/ :classpath的根目录
-
加载顺序为上文的排列顺序,高优先级配置的属性会生效
外部配置加载顺序
通过官网查看外部属性加载顺序:
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html