■注解介绍:
一 @Configuration:
1.该类是一个配置类
2.加了@Configuration注解的类,会自动纳入Spring 容器(@Component)
@Configuration//表示A是一个 用于 配置的类
public class A{}
二 @ConfigurationProperties:
@Component
@ConfigurationProperties(prefix="student")
public class Student {}
然后在yml文件赋值:
student:
name: zs
age: 23
sex: true
birthday: 2019/02/12
绑定: @ConfigurationProperties(yml/properties) @Value(“xx”) 二者可以互补
区别:
@ConfigurationProperties @Value
注值 批量注入 单个
松散语法 支持 不支持
SpEL 不支持 支持
JSR303数据校验 支持 不支持
注入复杂类型 支持 不支持
在springboot中,简单类型:(8个基本类型/String/Date)
三 @PropertySource:
默认会加载application.properties/application.yml文件中的数据;
也可以自定义配置 加载指定配置文件:
例如@PropertySource(value={“classpath:conf.properties”})
加载conf.properties文件中的数据;
但是,@PropertySource只能加载properties,不能加载yml
■默认全局配置文件:
application.properties : key=value
application.yml :不是一个标记文档。
注意:1. key:空格value 2.通过垂直对齐 指定层次关系 3.默认可以不写引号; "xxx"会将其中的转义符进行转义,其他不会 4.[Set/List/数组], {map,对象类型的属性},并且 []可省,{}不能省
server:
port: 8882
path: /a/b/c
xml:是一个标记文档
<server>
<port>8882</port>
<path>/a/b/c</path>
</server>
■如何知道 spring boot开启了哪些自动装配、禁止了哪些自动装配:
application.properties/yml中 debug=true/debug: true
Positive matches列表 表示 spring boot自动开启的装配
Negative matches列表 表示spring boot在此时 并没有启用的自动装配。
■多环境的切换:
yml配置文件:
#第一个环境(主环境)
server:
port: 8883
spring:
profiles:
active: dev #指定本次采用的环境
#第二个环境
---
server:
port: 8884
spring:
profiles: dev #环境名
---
server:
port: 8885
spring:
profiles: test #环境名
■配置文件的位置:
i.项目内部的配置文件:
properties和yml中的配置,相互补充;如果冲突,则properties优先级高。
spring boot默认能够读取的application.properties/application.yml,这2个文件 可以存在于以下4个地方:
file:项目根目录/config application.properties
file:项目根目录 application.properties
classpath:config application.properties
classpath:application.properties
注意:
a.如果某项配置冲突,则优先级从上往下
b.如果不冲突,则互补结合使用
配置项目名:
properties文件中
server.servlet.context-path=/boot
配置之后URL则必须是http://localhost:8080/boot/xxx
默认是http://localhost:8080
ii.项目外部的配置文件: (补救)
在Eclipse中:Run configuration ,argumenets:
–spring.config.location=D:/application.properties
如果 同一个配置 同时存在于 内部配置文件 和外部配置文件,
则外部>内部
在外部配置文件:
通过命令行 调用外部配置文件java -jar 项目.jar --spring.config.location=D:/application.properties
iii.项目运行参数: (补救)
在项目Run configuration ,argumenets:–server.port=8883
通过命令行 调用外部配置文件
java -jar 项目.jar --server.port=8883
多个地方配置时,如果冲突,优先级:命令参数(调用外部的配置文件 > 运行参数 )>内部文件 (properties>yaml)
先写(复制)到这吧