0
点赞
收藏
分享

微信扫一扫

C#核心笔记——(一)C#和.NET Framework

m逆光生长 2023-10-30 阅读 50

首先,SpringBoot的自动配置不等于自动装配!

自动配置是Auto-Configuration,针对的是SpringBoot中的配置类,
而自动装配是Autowire,针对的是Spring中的依赖注入。


进入主题:

自动配置简单来说就是自动去把第三方组件的Bean装载到IOC容器中,不需要开发人员再去写Bean相关的配置。在SpringBoot应用里只需要在启动类上加@SpringBootApplication注解就可以实现自动装配。
@SpringBootApplication注解是一个复合注解,真正去实现自动配置的注解是它里面的@EnableAutoConfiguration这样一个注解。自动配置的实现主要依靠三个核心的关键技术:

①、第一个,引入Starter
在这里插入图片描述
启动依赖组件的时候,这个组件里必须要包含一个@Configuration配置类,而在这个配置类里面我们需要通过@Bean这个注解去声明需要装配到IOC容器里面的Bean对象。

②、第二个,这个配置类是放在第三方的jar包里面,然后通过SpringBoot中约定优于配置的这样一个理念,去把这个配置类的全路径放在classpath:/META-INF/spring.factories文件里面,这样SpringBoot就可以知道第三方jar包里面这个配置类的位置,这个步骤主要是用到了Spring里面的SpringFactoriesLoader来完成的

③、第三个,SpringBoot拿到所有第三方jar包里面声明的配置类以后,再通过Spring提供的ImportSelector这样一个接口来实现对这些配置类的动态加载,从而去完成自动配置这样一个动作。

在我看来,Springboot是约定优于配置这一理念下的一个产物,所以在很多地方都能看到这一类的思想,它的出现让开发人员可以更加聚焦(集中注意)在业务代码的编写上,而不需要去关心和业务无关的配置。

拓展:其实自动配置的思想在SpringFramework3.x版本里面的@Enable注解就已经有了实现的一个雏形,@Enable注解是一个模块驱动的意思,也就是说我们只需要增加@Enable注解就能自动打开某个功能,而不需要针对这个功能去做Bean的配置,@Enable注解的底层也是去帮我们自动去完成这样一个模块相关Bean的注入的,然后基于这一理念有了后来的SpringBoot自动配置。

以上就是我对于SpringBoot自动配置的一个理解。

在这里插入图片描述



顺带再贴一下ChatGPT给出的java config常见注解作为拓展学习~

在使用 Java Config 配置 Spring 应用程序时,常见的注解包括:

  • @Configuration:用于标记一个类为配置类,相当于 XML 配置文件中的 标签。

  • @Bean:用于标记一个方法为 Spring Bean 的定义,相当于 XML 配置文件中的 标签。

  • @ComponentScan:用于指定要扫描的包,并自动将标记为 @Component、@Service、@Repository等注解的类注册为 Spring Bean。

  • @Autowired:用于自动注入一个依赖对象,相当于 XML 配置文件中的 标签。

  • @Qualifier:用于指定注入的 Bean 的名称,配合@Autowired一起使用。

  • @Value:用于从配置文件中读取属性值,并注入到一个变量中。

  • @Profile:用于指定不同的环境或配置激活时才注册相应的 Bean。

  • @Scope:用于指定 Bean 的作用域,包括 singleton(单例)和 prototype(原型)等。

  • @PostConstruct:用于指定初始化方法,在 Bean 创建后执行。

  • @PreDestroy:用于指定销毁方法,在 Bean 销毁前执行。

这些注解是常见的 Java Config 配置中使用的注解,通过它们可以方便地完成 Spring Bean 的定义、依赖注入和各种配置。这种基于注解的配置方式相比传统的 XML 配置更加简洁和可读性更高。

举报

相关推荐

0 条评论