spring-boot-自动装配原理-03

SpringBoot启动的时候通过@EnableAutoConfiguration注解找到META-INF/spring.factories文件中的所有自动配置类,并对其加载,这些自动配置类都是以AutoConfiguration结尾来命名的。它实际上就是一个JavaConfig形式的IOC容器配置类,通过特殊的结尾命名类来取得在全局配置文件中配置的属性。

自动装配原理解析

        首先在遇到上述文字并且理解不了之时,学着静下心来将文字拆,不管面对任何事情,小船夫们记住将大问题拆分为小问题,这是一种大智慧!!!

  1. SpringBoot启动会加载大量的自动配置类
  2. 我们需要明白一点:那就是我们写的功能是否在SpringBoot默认的配置类中
  3. 只要我们需要的组件存在配置类中,我们就不需要在手动配置类
  4. 在容器中给自动配置类添加组件的时候,会从properties类中获取某些属性,我们只需要在配置文件中指定这些属性的值即可

在了解了自动装配的原理之后,我们来关注一个细节问题,自动装配是在什么情况下面生效的?那么我们怀着疑问来探究一下 @ C o n d i t i o n a l \color{#FF00FF}{@Conditional} @Conditional派生注解

@Conditional

必须是@Conditional指定的条件成立,才给容器中添加组建,配置里面的内容才生效

@Conditional扩展注解作用(判断是否满足当前指定的条件)
@ConditionalOnJava系统的java版本是否符合指定要求
@ConditionalOnBean容器中存在指定Bean
@ConditionalOnMissingBean容器中不存在指定Bean
@ConditionalOnExpression满足SpEL表达式指定
@ConditionalOnClass系统中有指定的类
@ConditionalOnMissingClass系统中没有指定的类
@ConditionalOnSingleCandidate容器中只有一个指定的Bean,或者这个Bean是首选
@ConditionalOnProperty系统中指定的属性是否有指定的值
@ConditionalOnResource类路径下面是否存在指定的资源文件
@ConditionalOnWebApplication当前是否是Web环境
@ConditionalOnNotWebApplication当前不是web环境
@ConditionalOnJndiJndi存在指定项

注意

JNDI(Java Naming and Directory Interface,Java命名和目录接口)是SUN公司提供的一种标准的Java命名系统接口

判断自动配置类是否生效

我们可以使用debug = true属性;来让控制台打印自动配置报告,这样我就很容易知道那些配置类生效了。

代 码 实 例 \color{#FF7D00}{代码实例}

# 开启springboot的调试类
debug = true

然后,我们即可在控制台看输出日志

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
SpringBoot自动装配原理是通过扫描外部引用jar包中的META-INF/spring.factories文件来加载配置信息,并将配置的类型信息加载到Spring容器中,并执行相应的操作。\[1\]在SpringBoot中,我们只需引入对应的starter依赖,就可以自动完成对第三方依赖的配置操作,无需手动编写特定的bean。\[1\] 具体实现原理是通过在resources目录下创建一个spring.factories文件,文件中配置了需要自动装配的类的全限定名,使用@EnableAutoConfiguration注解来启用自动装配。\[2\]在SpringBoot的主启动类上使用@SpringBootApplication注解,该注解包含了@SpringBootConfiguration、@ComponentScan和@EnableAutoConfiguration三个注解。其中@SpringBootConfiguration注解表示该类是SpringBoot的配置类,@ComponentScan注解用于扫描被@Component注解的bean,@EnableAutoConfiguration注解是自动装配的核心注解。\[3\] 总结起来,SpringBoot自动装配原理是通过扫描外部引用jar包中的配置文件,加载配置信息,并根据配置信息自动完成对第三方依赖的配置操作,简化了开发者的配置工作。 #### 引用[.reference_title] - *1* *2* *3* [Springboot自动装配原理](https://blog.csdn.net/weixin_43324905/article/details/123949084)[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^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敏姐儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值