SpringBoot学习 — 自动装配原理二

JSR 303校验

JSR 303 是JAVA EE 6 中的一项子规范,叫做 Bean Validation。

JSR 303 用于对 Java Bean 中的数据进行验证。

分析自动配置原理

在spring.factories下随便打开一个类进行分析,这里以HttpEncodingAutoConfiguration(Http编码自动配置)为例进行分析。

 进入这个配置类:

@Configuration(
    proxyBeanMethods = false
)
@EnableConfigurationProperties({HttpProperties.class})
@ConditionalOnWebApplication(
    type = Type.SERVLET
)
@ConditionalOnClass({CharacterEncodingFilter.class})

1.@Configuration( proxyBeanMethods = false )

表示这是一个配置类,和配置文件一样,也可以给容器添加组件。

2.@EnableConfigurationProperties({HttpProperties.class})

此注解 启动类的 ConfigurationProperties 功能

进入 HttpProperties

3.@ConfigurationProperties( prefix = "spring.http")

将配置文件和 HttpProperties 绑定起来。(从配置文件中获取指定的值,和bean的属性进行绑定)

看到这个注解,有点熟悉,在上一篇yaml配置文件中学到,将yaml中的值注入到所需类中时,用的就是这个注解:

  • 将配置文件中配置的每一个属性的值,映射到该组件中

  • 告诉SpringBoot将该类中的所有属性和配置文件中相关的配置进行绑定

4.@ConditionalOnWebApplication( type = Type.SERVLET )

@Conditional  Spring的底层注解,判断作用:如果满足指定条件,整个配置类里面的配置才会生效。

5.@ConditionalOnClass({CharacterEncodingFilter.class})

判断当前项目中是否存在 CharacterEncodingFilter 类(SpringMVC中乱码解决的过滤器)

总结

  • 自动配置必须在一定条件下才能生效(@Conditional 指定的条件成立)
  • 一旦这个配置类生效,它就会给容器中添加各个组件
  • 所有配置文件中能配置的属性都在xxxProperties类中封装着
  • 配置文件能配置什么就可以参照某个功能对应的这个属性类
  • xxxAutoConfiguration:自动配置类:给容器中添加组件
  • xxxProperties:封装配置文件中的相关属性

补充知识点

SpringBoot中有很多配置类,但不是所有的都生效了。

此时,我们可以通过启用 debug=true 属性,来让控制台打印自动配置报告,然后就可以很容易的查看哪些自动配置类生效了。

#开启springboot的调试类
debug: true

开启服务之后,控制台会将结果打印出来。

  自动配置类启用

 启用失败的自动配置类

  没有条件的类

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值