自动配置原理
原理说明







精髓


示例
以HttpEncodingAutoConfiguration为例
注解中有前缀的写法,
我们能配置的属性在springBoot1.5.9版本中来源于HttpEncodingProperties类
但是在2.3.1版本中,能配置的属性来源于Encoding类

可以看到server.servlet.encoding后边可以加enabled、charset、force、forceRequest、forceResponse、mapping


再比如CacheAutoConfiguration
能配置的属性在CacheProperties类中


个人总结
springBoot框架作为半成品,其实就是为了方便开发,
原来很多自己配置的东西,都交给了框架处理。
springBoot启动时会加载大量自动配置类,配置类中就会把很多组件放到spring的ioc容器中
我们使用时,就是看需要的组件springBoot的自动配置类中是否已经提供
如果没有提供,这时就需要自己去编写组件。
如果提供了,那么组件的属性是否符合我们的要求,如果不符合,也就是不使用它默认的配置,而是自己在配置文件中定义属性
而这些属性包含哪些,就去看自动配置类的xxxProperties类中的成员。从而指定希望出现的参数,满足项目需求。
Conditional注解
在自动配置类上,包括在组件方法上,都可以看到Conditional注解,它的含义就是在创建这个自动配置类或者创建这个组件之前,要进行判断
比如这个编码过滤器,它是要在没有配置过这个Bean 的时候才生成组件

他们都是根据spring的原生@Conditional注解来做的派生注解
就是经过了一个条件判断
必须Conditional注解中条件成立,才会把组件添加到容器中,配置的内容才生效



自动配置报告
当启用了springBoot的debug配置,会在控制台打印自动配置报告


包括匹配到的自动配置类,和未启用的自动配置类

本文深入探讨了Spring Boot自动配置的原理,通过分析HttpEncodingAutoConfiguration和CacheAutoConfiguration等示例,揭示了如何通过配置文件调整组件属性。并介绍了如何利用xxxProperties类定制参数,满足项目需求。

1416

被折叠的 条评论
为什么被折叠?



