【HBZ分享】spring启动时自动装配的位置

自动装配流程

  1. springboot启动时,自动装配逻辑在@SpringBootApplication这个符合注解中的@EnableAutoConfiguration
  2. 新版springboot3会扫描META-INF的spring文件夹下的org.springframework.boot,autoconfigure,AutoConfiguration.imports文件,会把这里所有写的自动装配类路径全部拉取到内存
  3. 初步排除一下不需要自动装配的类,即看下这些类上面是否存在@EnableAutoConfiguration注解,不存在该注解直接被排除,remove出map集合中
  4. 进一步判断留下的这些自动装配类是否需要加载到IOC, 此时会根据META-INF的spring-autoconfigure-metadata.properties里面的条件进行filter过滤,只会加载符合条件的自动装配类
  5. 实际上经过filter条件过滤后,大多数类都不会被加载
  6. 如果是springboot2.7之前的版本,自动装配类扫描路径是在META-INF下的spring.factories文件。

自动装配文件配置的所在位置

  1. 旧版的自动装配类配置的路径:
    在META-INF下的spring.factories文件中,以key-value的形式

  2. 新版本自动装配类的路径:
    在META-INF的spring文件夹下的org.springframework.boot,autoconfigure,AutoConfiguration.imports文件中,这个文件名和路径必须这么写,是固定的。内容是以【包名+类名】的格式,每个自动装配独立占1行,无需加什么分隔符,直接换行写第二个自动装配类即可

  3. 校验过滤哪些自动装配类的条件:
    在META-INF的spring-autoconfigure-metadata.properties中,这里面定义了所有需要自动装配的条件,只有符合的才会自动装配

新版自动装配类的写法org.springframework.boot,autoconfigure,AutoConfiguration.imports截图:
在这里插入图片描述

旧版自动装配写法spring.factories截图:
在这里插入图片描述

spring-autoconfigure-metadata.properties自动装配条件文件截图:

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要保证消息的顺序消费,可以采取以下几种方法: 1. 在RabbitMQ中,可以将带有顺序性的消息放入同一个队列(queue)中,并且只有一个消费者来消费该队列。这样可以确保消息按照顺序被消费,避免负载均衡的情况发生。 2. 在Kafka中,可以将消息放入同一个分区(partition)中,并且由同一个消费者来进行消费。这样可以保证消息按照分区的顺序被消费。可以直接指定某个分区来放置消息,或者通过hash取模的方式将具有相同特定值的消息放到同一个分区中。 3. 在RocketMQ中,可以使用MessageListenerOrderly,它自带单线程消费消息的功能,这样就不需要在消费者端再使用多线程去消费消息。同时,还要确保需要顺序消费的消息进入同一个队列中,这样就能保证顺序消费的实现。 需要注意的是,顺序消费会导致负载不均衡和性能下降的问题。因为同一个队列或分区只能由一个消费者进行消费,无法进行负载均衡;而使用hash取模的方式可能会导致某些分区的消息很多,而某些分区的消息很少,产生倾斜效应。这些是顺序消费需要考虑的后果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【HBZ分享】MQ如何保证消息的顺序消费](https://blog.csdn.net/a645293829/article/details/125342165)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [如何保证消息队列里消息的生成和消费的顺序性](https://blog.csdn.net/bboy66/article/details/124408040)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值