springboot自动配置

springboot是在spring基础上的一次跃迁,是约定先于配置的完美实践。

最近在学习springboot相关内容,看到自动配置这个知识点时,着实有些困惑,网上大多博客多介绍何为springboot自动配置及其实现原理,读完依然还有些云遮雾绕。

鉴于现今我浅薄的spring知识,并不深刻知道springboot自动配置相较于spring的原始配置之间究竟有何不同,遂遍历多篇相关博客并请教大佬,才堪堪在逻辑上对二者之区别略有知晓。

我想从spring之XML配置到spring之注解配置后至springboot自动配置这个逐渐演进的过程来说明此中缘由,或许有助于各位理解。

spring之XML配置

此阶段的spring若要将第三方jar包导入至spring的IOC容器,需要如下几个步骤:

  • maven导入第三方jar包依赖;
  • 在spring的默认配置文件(XML文件)中创建bean标签,表明需要导入的服务类;
  • 在第三方jar所属配置文件(XML文件)中对这个依赖进行若干参数配置;

这样,当启动spring应用时,此jar包相关类便会被spring收集并注册到spring的IOC容器之中。

然而,这样操作的结果是若引入jar包太多,则spring的默认配置文件中的bean标签将会数不胜数,终至配置文件太过臃肿。因此,基于javaConfig的注解配置方式应运而生。

spring之注解配置

为了不使spring配置文件体量太大,javaConfig定义多个注解来完成对第三方jar包的引入。

  • maven导入第三方jar包依赖;
  • 舍弃传统的基于xml配置文件的配置方式,使用@Configuration和@Bean两个注解在代码中创建服务配置类;
  • jar包若干参数便可在这个服务配置类中定义,也可在jar包所属配置文件中配置;

这样的操作方式在大型项目中使xml配置文件的个数和大小锐减,项目的整个工程结构更加清晰,便于开发和维护。

然而,喜欢化繁为简的软件工程师们就这样满足了吗???

当然不会!!!

为了践行约定先于配置的工程思想,springboot横空出世。springboot的出现,再一次大大简化了启动一个web项目需要的步骤。我们不需要再自己启动一个servlet容器,

也不需要传统xml配置文件的繁琐配置,只需要简单的将所需jar包引入到pom文件,那么一个简单的web项目就可以启动。当然,我们也可以在springboot的application.yml文件中进行个性化配置。

springboot的自动配置就简化了jar包引入,我们不需要再自己写服务配置类,@EnableAutoConfiguration注解已经帮助我们将依赖bean注入到IOC容器,我们只需要在代码中使用@Autowired注解

就可以轻松获取。springboot自动配置提供了一系列约定配置,当我们想进行个性化定制时,这些约定配置便被覆盖。

如果想深入了解springboot自动配置的实现机制,可参考其它博客。

本文是在参考其它博文的基础上通过逻辑整理得来,若有错误之处,请不吝赐教。

原文地址:https://www.cnblogs.com/codelocking/p/10719710.html

时间: 2024-11-10 10:04:54

springboot自动配置的相关文章

SpringBoot自动配置原理

SpringBoot自动配置主要通过@EnableAutoConfiguration, @Conditional, @EnableConfigurationProperties或者@ConfigurationProperties 等几个注解来进行自动配置完成的. @EnableAutoConfiguration开启自动配置,主要作用就是调用Spring-Core包里的loadFactoryNames(),将autoconfig 包里的已经写好的自动配置加载进来. @Conditional条件注解

助力SpringBoot自动配置的条件注解ConditionalOnXXX分析--SpringBoo

注:该源码分析对应SpringBoot版本为2.1.0.RELEASE 1 前言 本篇接如何分析SpringBoot源码模块及结构?--SpringBoot源码(二) 上一篇分析了SpringBoot源码结构及各个模块pom之间的关系后,那么此篇开始就开始解开SpringBoot新特性之一--自动配置的神秘面纱了.因为SpringBoot自动配置原理是基于其大量的条件注解ConditionalOnXXX,因此,本节我们先来撸下Spring的条件注解的相关源码. 2 SpringBoot的派生条件

SpringBoot源码分析----(一)SpringBoot自动配置

前言 springboot项目将模块化设计发挥到及至,需要什么模块,只需导入这个模块对应的stater即可,当然,用户根据业务需要自定义相关的stater,关于自定义stater在后续章节将一一解说,学习springboot,首要了解springboot的自动配置原理,我们从springboot项目的主启动类说起逐步解读springboot自动配置的奥秘. springboot自动配置解读 @SpringBootApplication public class SpringBootQuickAp

一个由于springboot自动配置所产生的问题的解决

由于我的项目里面需要使用到solr,我做了一下solr和springboot的整合,结果启动项目的时候,就报错了...报错的信息的第一行提示如下: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'solrClient' defined in class path resource [org/springframework/boot/autoconfigure/solr/

如何编写Spring-Boot自动配置

摘要 本文主要介绍如何把一个spring的项目(特别是一些公共工具类项目),基于spring boot的自动配置的思想封装起来,使其他Spring-Boot项目引入后能够进行快速配置. AutoConfiguration Spring-boot的一个重要特性就是提供了各种各样的AutoConfiguration.例如DataSourceAutoConfiguration.这样我们只需要在配置文件中进行如下配置 spring: datasource: url: jdbc:mysql://xxxxx

SpringBoot自动配置的实现原理

之前一直在用SpringBoot框架,一直感觉SpringBoot框架自动配置的功能很强大,但是并没有明白它是怎么实现自动配置的,现在有空研究了一下,大概明白了SpringBoot框架是怎么实现自动配置的功能,我们编写一个最简单的自动配置功能,大概的总结一下. 一,配置属性类 其实就是值对象注入的方式去配置一些Spring常用的配置,我们编写一个最简单的配置对象. @ConfigurationProperties(prefix = "hello") //@Component //如果这

springBoot 自动配置原理

在之前文章中说过,springBoot会根据jar包去添加许多的自动配置,本文就来说说为什么会自动配置,自动配置的原理时什么? springBoot在运行SpringApplication对象实例化时,就会去加载 META-INF/spring.factories文件,就会将这个文件中的配置都加载到spring容器中.下面,我们去看看SpringApplication对象的初始化方法 initialize() 方法. 因为我们在项目启动时有用到这个对象,所以,我们可以直接从这里进入. 找到 in

[springboot 2019-10-23] 自定义springboot自动配置

1.创建springboot 3个关键类 1.1 属性读取类:用于从配置文件中读取配置信息 package com.shijt.springbootdemo.jdbc; import org.springframework.boot.context.properties.ConfigurationProperties; @ConfigurationProperties(prefix = "mysql.jdbc") public class JDBCRead { private Stri

SpringBoot自动配置注解原理解析

1. SpringBoot启动主程序类: 1 @SpringBootApplication 2 public class DemoApplication { 3 public static void main(String[] args) { 4 5 SpringApplication.run(DemoApplication.class, args); 6 } 7 } 每次我们直接直接启动这个启动类,SpringBoot就启动成功了,并且帮我们配置了好多自动配置类. 其中最重要是 @Spring