SpringBoot 配置文件
配置文件的两种分类
- application.properties
- application.yml
properties配置格式
栗子:
server.port=8080
server.servle.context-path= /api
yml配置格式
栗子:
server:
servlet:
context-path: /api
port: 9000
更加推荐yml更加简洁清晰而且能少写不少代码,开发中不要写两种,properties会覆盖yml
yml的语法规则
yml介绍
- 是一个标记语法 主要是用来配置文件
- 以数据为中心,比xml和json更加合适作为配置文件
基础语法
key:(空格)value
说明
- 以空格的缩进方式表示层级关系
- 同一级要左对齐
- 大小写是敏感的
server:
servlet:
context-path: /api
port: 9000
值得类型
- 基本类型
- 对象
- 数组
基本类型
name: 一个人
age: 19
price: 1154.256
对象类型
扫描二维码关注公众号,回复:
9952164 查看本文章
user:
name: 那个人
age: 18
price: 1865.24
#也可以在行内 user: {name: 那个人}
数组
address:
- 广州
- 东莞
- 北京
- 深圳
一定要保证层级关系就是用空格
如何获取配置文件的value
- @value 获取单个值
- @ConfigurationProperties 获取这个对象的值
如果想使用@ConfigurationProperties这个注解必须导入 configuration-processor
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
2.11之后需要在pom文件中添加依赖
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
</dependency>
自动化配置(原理)
- @SpringBootApplication 告诉springboot 是程序的启动类
@SpringBootApplication注解
- @Configuration + @EnableAutoConfiguration + @ComponentScan = @SpringBootApplication注解
源码
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
//自动化配置
@EnableAutoConfiguration
@ComponentScan(
excludeFilters = {@Filter(
type = FilterType.CUSTOM,
classes = {TypeExcludeFilter.class}
), @Filter(
type = FilterType.CUSTOM,
classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {
@AliasFor(
annotation = EnableAutoConfiguration.class
)
Class<?>[] exclude() default {};
@AliasFor(
annotation = EnableAutoConfiguration.class
)
String[] excludeName() default {};
@AliasFor(
annotation = ComponentScan.class,
attribute = "basePackages"
)
String[] scanBasePackages() default {};
@AliasFor(
annotation = ComponentScan.class,
attribute = "basePackageClasses"
)
Class<?>[] scanBasePackageClasses() default {};
}
自动配置的原理
@EnableAutoConfiguration 自动化配置核心类
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import({AutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {
String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";
Class<?>[] exclude() default {};
String[] excludeName() default {};
}
主要作用是自动化在程序的所有配置(预定由于配置的实现)
具体步骤 AutoConfigurationImportSelector
- 调用selectImports方法
- selectImports调用了getConfigurations方法
- List configurations = this.getCandidateConfigurations(annotationMetadata, attributes);
List<String> configurations = SpringFactoriesLoader.loadFactoryNames(this.getSpringFactoriesLoaderFactoryClass(), this.getBeanClassLoader());
- META-INF/spring.factories 找到你的对应配置文件,找到隐射java配置文件,把配置文件传入进去
springboot 数据整合
常用的数据访问整合
- jdbc的整合
- jpa的整合
- mybatis的整合
配置完配置文件后一定要记得在包下创建config,声明第三方的类
类上使用@Configuration
方法上要使用@Bean,方法一定要返回对象
mybatis的整合
- 配置yml文件
mybatis
- 启动类开启扫描