spring boot学习2(相关注解使用)

1、使用@ConfigurationProperties(prefix = "** ") 统一前缀

qq

Yaml语法配置:

student:
  studentName:
lfguan
 
studentId: 23
 
studentAge: 89
 
birth: 2018/12/12

2、使用@value

properties配置

school.schoolName=一中
school.address=合肥市
school.createTime=2019/12/12

 

2种配置进行对比

 

@ConfigurationProperties

@value

功能

批量导入配置文件数据

一个一个指定

松散绑定

支持(格式不是一定完全一样)

不支持

Spel

不支持(配置文件不支持计算)

支持

Jsr303数据校验

支持(validation-api)

不支持

复杂类型封装

支持(map,list等)

不支持

3、扩展注解

   3.1、@PropertySource()对于指定配置文件

 

3.2、@importresource()

导入spring配置,让spring配置生效;Spring boot种没有spring的配置文件,自己编写的无法自动识别。

3.3、@bean给容器添加组件

 

Springboot 推荐给容器中添加组件的方式;推荐使用全注解

  1. 配置类@Configuration-----》spring的配置文件
  2. 使用bean给容器添加组件(有依赖关系)

//将方法的返回值添加到容器中;容器中这个组件默认id就是方法名

3.4、@Import注解

3种方式

通过查看@Import源码可以发现@Import注解只能注解在类上,以及唯一的参数value上可以配置3种类型的值ConfigurationImportSelectorImportBeanDefinitionRegistrar

1.基于Configuration也就是直接填对应的class数组

2.基于自定义ImportSelector的使用

3.基于ImportBeanDefinitionRegistrar的使用

结果:

 

3.5、@Conditional条件注解

Springboot中使用需要继承SpringBootCondition重写getMatchOutcome(matches中有使用)

当一个 Bean 被 Conditional 注解修饰时,Spring容器会对数组中所有 Condition 接口的 matches() 方法进行判断,只有当其中所有 Condition 接口的 matches()方法都为 ture 时,才会创建 Bean 。

OnBeanCondition

当容器中至少存在一个指定name或者class的bean时

OnClassCondition

当classpath中至少存在一个指定的class

OnExpressionCondition

当指定的spel表达式为true时

OnJavaCondition

当jdk版本满足指定条件

OnJndiCondition

当JNDI接口至少一个可用时

ConditionalOnMissingBean

当容器中指定的name或者class的bean都不存在

ConditionalOnMissingClass

当classpath中指定的class都不存在时

OnPropertyCondition

当配置文件中特定配置项为指定值

OnResourceCondition

当classpath中存在指定文件资源

OnWebApplicationCondition

当应用上下文不是web环境时

我们来看下mongo配置

Springboot自带配置里面用到很多import和condition注解

Mongo的使用默认配置的条件:

存在MogoClient.class等相关类即引入了mongo的jar包

不存@ConditionalOnMissingBean(MongoDbFactory.class)

才会去使用默认配置

当我们添加一个配置

使用自定义配置了,取消默认配置

4、配置文件加载顺序

提示:默认配置文件加载顺序

  1. 项目/config/application.properties>
  2. 项目/application.properties
  3. Resources/config/ application.properties
  4. resources / application.properties

加载外部配置:

java -jar spring-boot-demo-0.0.1-SNAPSHOT.jar --spring.config.location=c:\application.properties

替换关系,非覆盖关系

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值