springboot自动装配原理初探

你的名字 2024-04-06 11:52 106阅读 0赞

文章目录

  • 初探·自动装配原理
    • 配置文件到底能写什么
  • 感受

初探·自动装配原理

配置文件到底能写什么

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 我的springboot是2.7.3的版本,找不到下面的内容,可能是我自己的错误,一下为了更好展示使用课程截图,spring boot 2.2.0的版本。
    在这里插入图片描述
  • 以HttpEncodingAutoConfiguration(Http编码自动配置)为例解释自动配置原理;

    //表示这是一个配置类,和以前编写的配置文件一样,也可以给容器中添加组件;
    @Configuration
    //启动指定类的ConfigurationProperties功能;
    //进入这个HttpProperties查看,将配置文件中对应的值和HttpProperties绑定起来;
    //并把HttpProperties加入到ioc容器中
    @EnableConfigurationProperties({

    1. HttpProperties.class})

    //Spring底层@Conditional注解
    //根据不同的条件判断,如果满足指定的条件,整个配置类里面的配置就会生效;
    //这里的意思就是判断当前应用是否是web应用,如果是,当前配置类生效
    @ConditionalOnWebApplication(
    type = Type.SERVLET
    )
    //判断当前项目有没有这个类CharacterEncodingFilter;SpringMVC中进行乱码解决的过滤器;
    @ConditionalOnClass({

    1. CharacterEncodingFilter.class})

    //判断配置文件中是否存在某个配置:spring.http.encoding.enabled;
    //如果不存在,判断也是成立的
    //即使我们配置文件中不配置pring.http.encoding.enabled=true,也是默认生效的;
    @ConditionalOnProperty(
    prefix = “spring.http.encoding”,
    value = {

    1. "enabled"},

    matchIfMissing = true
    )
    public class HttpEncodingAutoConfiguration {

    1. //他已经和SpringBoot的配置文件映射了
    2. private final Encoding properties;
    3. //只有一个有参构造器的情况下,参数的值就会从容器中拿
    4. public HttpEncodingAutoConfiguration(HttpProperties properties) {
    5. this.properties = properties.getEncoding();
    6. }
    7. //给容器中添加一个组件,这个组件的某些值需要从properties中获取
    8. @Bean
    9. @ConditionalOnMissingBean //判断容器没有这个组件?
    10. public CharacterEncodingFilter characterEncodingFilter() {
    11. CharacterEncodingFilter filter = new
    12. OrderedCharacterEncodingFilter();
    13. filter.setEncoding(this.properties.getCharset().name());
    14. filter.setForceRequestEncoding(this.properties.shouldForce(org.springframework.boot.autoconfigure.http.HttpProperties.Encoding.Type.REQUEST));
    15. filter.setForceResponseEncoding(this.properties.shouldForce(org.springframework.boot.autoconfigure.http.HttpProperties.Encoding.Type.RESPONSE));
    16. return filter;
    17. }
    18. //。。。。。。。

    }

  • 一句话总结 : 根据当前不同的条件判断,决定这个配置类是否生效!

  • 一但这个配置类生效;这个配置类就会给容器中添加各种组件;
  • 这些组件的属性是从对应的properties类中获取的,这些类里面的每一个属性又是和配置文件绑定的;
  • 所有在配置文件中能配置的属性都是在xxxxProperties类中封装着;
  • 配置文件能配置什么就可以参照某个功能对应的这个属性类

    //从配置文件中获取指定的值和bean的属性进行绑定
    @ConfigurationProperties(prefix = “spring.http”)
    public class HttpProperties {

    // …..
    }

感受

  • 这一部分,大家不要觉得作者太垃圾了,因为我也是跟着视频初学这些东西。
  • 听的也是迷迷糊糊,如果有某些小伙伴不想自己动手操作,截图的内容还是比较方便的。
  • 每天进步一点点,痛苦烦恼少一点

发表评论

表情:
评论列表 (有 0 条评论,106人围观)

还没有评论,来说两句吧...

相关阅读