Spring的自动配置

目录

背景

前言

SpringBoot的自动配置

小结

背景

地点:长沙飞思项目十

时间:2023/10/7~10/13

大致内容:springboot、spring

前言

spring的自动配置解决了xml配置的繁琐问题,基本上是实现了“0配置”开发,但为什么spring可以实现自动配置,怎样实现自动配置的呢?

SpringBoot的自动配置

所谓的Spring的自动配置,就是我们很多的组件不需要我们去显示的去@Bean或者使用一些方法去声明或者配置它们,SpringBoot会自动的让它们去生效。

当我们创建一个Springboot项目时,会创建一个启动类,又要在启动类上加上一个@SpeingBootApplication,这个也是Springboot的核心注解。

进入@SpeingBootApplication,能看到@SpeingBootApplication又引用了这些注解,其中又以三个注解为重。

上面三个注解可以简单理解为

  • @EnableAutoConfiguration:启用 SpringBoot 的自动配置机制
  • @SpringBootConfiguration:允许在上下文中注册额外的 bean 或导入其他配置类
  • @ComponentScan:扫描被@Component (@Service,@Controller)注解的 bean,注解默认会扫描启动类所在的包下所有的类 ,可以自定义不扫描某些 bean。

所以@EnableAutoConfiguration就是我们对Springboot自动配置研究的重点。

进入@EnableAutoConfiguration,自动装配核心功能的实现实际是通过AutoConfigurantionImportSelector类来实现的。

进入AutoConfigurantionImportSelector中,发现它拓展了一个叫ImportSelector的接口,这个接口里面又有一个叫selectImports的方法,这个方法会返回一个字符串数组,如果这个字符串数组里面是一个类名的话,spring则会将其自动实例化。

而当我们想要使用到第三方的技术时,就要利用到一个名为“starter”的技术。

导入依赖(pom.xml)

<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <version>3.1.4</version>
</dependency>

它就会去读取当前项目下的所有jar包,或者在我们的项目当中的resources下面的META-INF下面的spring下面的的一个文件org.springframework.boot.autoconfigure.AutoConfiguration.imports该文件下就是第三方start提供的一些自动配置的类名,将会被作为字符串返回出去并生效。生效之后,由于它们会加上@Condition这些注解,这@Condition就是用来配置我们当前Bean是否在某种条件下去完成实例化。

小结

利用Spring Boot自动装配功能具有以下好处:

1、简化开发:Spring Boot自动装配功能可以减少开发人员的工作量,减少重复代码的编写。在应用程序中引入所需的依赖,即可自动配置相关的Bean,无需手动编写相关的配置文件。

2、提高效率:Spring Boot自动装配功能可以让开发人员更加专注于业务逻辑的实现,从而提高开发效率。

3、减少错误:Spring Boot自动装配功能可以避免手动配置过程中的错误,减少应用程序运行中的错误。

4、保证一致性:Spring Boot自动装配功能可以保证应用程序的各个部分之间的一致性,减少不同部分之间的差异。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值