Spring Boot 中的自动配置 SpringBoot 启动的时候,会有大量的自动配置的类加载到容器中。...从源码中可以看到它标注了一个@Import 注解,该注解是 Spring 的底层注解。它给容器中导入一个组件 (AutoConfigurationImportSelector.class)。...我们可以在 spring-boot-autoconfigure.jar 中查看具体导入了哪些组件,spring-boot-autoconfigure.jar 有一个 META-INF/spring.factories...spring.factories 中的内容如下: ? 继续展开,看到这里包含了大量的自动配置类,有了这些自动配置类就能帮我们自动配置好相关内容,简化开发,提高效率。 ?...SpringBoot 的自动配置原理并不复杂,它大量的使用了条件注解@Conditional,该注解可以根据不同的条件状态来判断是否需要自动配置。想深入了解的话,可以百度一些文章,分析的比较详细。
随着Spring家族中的新星Spring Boot的诞生,这些问题都在逐渐被解决。 个人觉得Spring Boot中最重要的两个优势就是可以使用starter简化依赖配置和Spring的自动配置。...Spring自动配置 Spring Boot会根据类路径中的jar包、类,为jar包里的类自动配置,这样可以极大的减少配置的数量。...关于Spring Boot中的Spring自动化配置主要是@EnableAutoConfiguration的功劳。该注解可以让Spring Boot根据类路径中的jar包依赖为当前项目进行自动配置。...Configuation 我们从spring-boot-autoconfigure-1.5.1.RELEASE.jar中的spring.factories文件随便找一个Configuration,看看他是如何自动加载...总结 至此,我们可以总结一下Spring Boot的自动化配置的实现: ?
Spring Boot的自动配置给开发者带来了很大的便利,当开发人员在pom文件中添加starter依赖后,maven或者gradle会自动下载很多jar包到classpath中。...当Spring Boot检测到特定类的存在,就会针对这个应用做一定的配置,自动创建和织入需要的spring bean到程序上下文中。...接下来将在之前的工程的基础上,观察在程序的引导启动过程中,Spring Boot通过自动配置机制帮我们做了哪些工作。...How Do Spring Boot启动时将自动配置的信息通过DEBUG级别的日志打印到控制台。可以通过设置环境变量(DEBUG)或者程序属性(--debug)设置程序的日志输出级别。...在项目目录下运行DEBUG=true mvn spring-boot:run启动应用程序; 在后台可以看到DEBUG级别的日志输出,在启动日志的最后,可以看到类似AUTO-CONFIGURATION REPORT
Spring Boot 提供的自动配置非常强大,某些情况下,自动配置的功能可能不符合我们的需求,需要我们自定义配置,这个时候就需要排除/禁用 Spring Boot 某些类的自动化配置了。...比如:数据源、邮件,这些都是提供了自动配置的,我们需要排除 Spring Boot 的自动化配置,交给我们自己来自定义,该如何做呢? 今天栈长给你介绍 4 种排除方式,总有一种能帮到你!...方法4 终极方案,不管是 Spring Boot 还是 Spring Cloud 都可以搞定,在配置文件中指定参数 spring.autoconfigure.exclude 进行排除: spring.autoconfigure.exclude...Boot 的自动配置功能就游刃有余了,怎么样?...建议转发+收藏,再置顶公众号,以后不迷路~ 好了,今天的分享就到这里,更多 Spring Boot 文章正在撰写中,关注Java技术栈微信公众号获取第一时间推送。
它的项目依赖图如下: ? ? 可以看出,这些starter只是配置,真正做自动化配置的代码的是在spring-boot-autoconfigure里面。...5.3 @EnableAutoConfiguration自动配置原理 通过@EnableAutoConfiguration启用Spring应用程序上下文的自动配置,这个注解会导入一个EnableAutoConfigurationImportSelector...当Spring Boot Application中自动配置EnableAutoConfiguration的相关类执行完毕之后,Spring Boot会进一步解析对应类的配置信息。...另外,我们使用spring.factories里还可以定制应用程序的初始化行为。这样我们就可以在应用程序载入前操纵Spring的应用程序上下文ApplicationContext。...这样,当我们以调试模式启动应用程序时,SpringBoot就可以帮助我们创建自动配置的运行报告。对于每个自动配置,通过报告我们可以看到它启动或失败的原因。
排除HikariCP 首先,删除依赖管理中的HikariCP依赖、排除依赖管理中的HikariCP传递依赖,spring-boot-starter-jdbc或spring-boot-starter-data-jpa...从上图可以看到,SpringBoot的jar包中已经预设好了一些自动配置的类,这些自动配置的类会被getAutoConfigurationEntry方法检索到,返回一个自动配置类的列表,后续的流程将这些自动配置类解析成...通过上图可以看到,Druid的自动配置也是基于上述的原理实现的。...SpringBoot提供了自动配置可扩展的口子,开发人员只要在jar包中META-INF/spring.factories文件中使用org.springframework.boot.autoconfigure.EnableAutoConfiguration...,执行自动配置类的实例化和初始化,这些自动配置类是否会被实例化,需要满足一定条件,例如当前类路径下是否含有相应类的jar包等,满足条件则执行自动配置类中的一些实例化操作。
我们发现 Spring Security Starter相关的 Servlet 自动配置都在spring-boot-autoconfigure-2.1.9.RELEASE(当前 Spring Boot...其实官方提供的Starter组件的自动配置你都能在spring-boot-autoconfigure-2.1.9.RELEASE下找到。...Spring Boot 下 Spring Security 的自动配置 我们可以通过 org.springframework.boot.autoconfigure.security.servlet 路径下找到...Spring Boot 自动配置经常使用这种方式以达到灵活配置的目的,这也是我们研究 Spring Security 自动配置的一个重要入口 同时 SecurityAutoConfiguration 还将...总结 本文主要对 Spring Security 在 Spring Boot 中的自动配置一些机制进行了粗略的讲解。为什么没有细讲。
尽管如此,Spring团队并没有放慢自己的脚步,于2014年,发布了Spring Boot。Spring Boot能用寥寥数行代码构建出一套Hello World应用程序,不费吹灰之力!...在Spring Boot还未问世前,向Spring应用中添加依赖是一件富有挑战性的工作,主要体现在:1) 需要哪些依赖;2) 依赖组件的版本信息是否与当前应用中的其他依赖相匹配。...starter模块内的;不同于第三方starter组件,Spring Boot内置的starter组件本身并不会包含自动配置类,而是统一将自动配置类存放于spring-boot-autoconfigure...在官方的spring-boot-autoconfigure模块亦或第三方的xxxx-spring-boot-autoconfigure中,凡是以AutoConfiguration为后缀的自动配置类都会由...对于nested member class,首先从当前ConfigurationClass实例中探测出嵌套成员类;然后通过ConfigurationClassUtils判断嵌套成员类是否是配置类,若是配置类
自定义spring boot的自动配置 上篇文章我们讲了spring boot中自动配置的深刻含义和内部结构,这篇文章我们讲一下怎么写出一个自己的自动配置。...只有在该bean没有在应用程序中配置的时候才会自动被配置。...如果应用程序中已经配置了该bean,则自动配置的bean会被覆盖。 添加Class Conditions 我们的mysqlConfig只有在DataSource这个类存在的时候才会被自动配置。...配置文件中的某个属性存在的情况下实例化bean,则可以使用@ConditionalOnProperty。...停止自动配置 如果我们不想使用刚刚创建的自动配置该怎么做呢?
尽可能地进行自动配置,减少了用户需要动手写的各种冗余配置项,Spring Boot 提倡无XML配置文件的理念,使用Spring Boot生成的应用完全不会生成任何配置代码与XML配置文件。...似乎有点跑题了,不过说了这么多,我想要强调的是,Spring Cloud中的每个组件都是基于Spring Boot构建的,而理解了Spring Boot的自动配置的原理,显然也是有好处的。...在Spring容器中是否已经注册了某种类型的Bean(如未注册,我们可以让其自动注册到容器中,上一条同理)。 一个文件是否在特定的位置上。 一个特定的系统属性是否存在。...在Spring的配置文件中是否设置了某个特定的值。...当你揭开神秘的面纱,去探索本质时,发现其实Spring Boot自动配置的原理就是如此简单,在了解这些知识后,你完全可以自己去实现自定义的自动配置类,然后编写出自定义的starter。
搞Spring Boot的小伙伴都知道,Spring Boot中的配置文件有两种格式,properties或者yaml,一般情况下,两者可以随意使用,选择自己顺手的就行了,那么这两者完全一样吗?...狡兔三窟 首先application.yaml在Spring Boot中可以写在四个不同的位置,分别是如下位置: 项目根目录下的config目录中 项目根目录下 classpath下的config目录中...这个属性,在第一个属性中,表示自己重新定义配置文件的位置,项目启动时就按照定义的位置去查找配置文件,这种定义方式会覆盖掉默认的四个位置,也可以使用第二种方式,第二种方式则表示在四个位置的基础上,再添加几个位置...ArrayList(); public List getServers() { return this.servers; } } 项目启动后,配置中的数组会自动存储到...,yaml配置是有序的,这一点在有些配置中是非常有用的,例如在Spring Cloud Zuul的配置中,当我们配置代理规则时,顺序就显得尤为重要了。
解决的问题领域是网站应用程序或者服务开发——URL路由、Session、模板引擎、静态Web资源等等。 Spring Boot实现了自动配置,降低了项目搭建的复杂度。...同时它集成了大量常用的第三方库配置(例如Jackson, JDBC, Mongo, Redis, Mail等等),Spring Boot应用中这些第三方库几乎可以零配置的开箱即用(out-of-the-box...我们可以通过basePackages等属性来细粒度的定制@ComponentScan自动扫描的范围,如果不指定,则默认Spring框架实现会从声明@ComponentScan所在类的package进行扫描...如果获取到类信息,spring可以通过类加载器将类加载到jvm中,现在我们已经通过spring-boot的starter依赖方式依赖了我们需要的组件,那么这些组件的类信息在select方法中就可以被获取到...所以Spring-boot为我们提供了统一的starter可以直接配置好相关的类,触发自动配置所需的依赖(mybatis)如下: org.mybatis.spring.boot
我们知道,spring boot自动配置功能可以根据不同情况来决定spring配置应该用哪个,不应该用哪个,举个例子: Spring的JdbcTemplate是不是在Classpath里面?...本篇随便讲从如下三个方面进行展开: @Conditional小例子,来说明条件化配置的实现方式 spring boot 的条件化配置详解 spring boot 自动配置源码分析 自己动手实现spring...基于以上内容,我们就可以阅读自动配置相关的源码了。...里面就有一个这样的文件,此文件中声明了具体有哪些自动配置: 我们上面提到的JdbcTemplateAutoConfiguration自动配置类就在里面。...* 自动匹配application.properties文件中hello.msg的值,然后赋值给类属性msg,这里的msg默认值为“spring boot” * */ @ConfigurationProperties
接下来关于SpringBoot的一系列文章和例子,都来自《Spring Boot Cookbook》这本书,本文的主要内容是start.spring.io的使用、Spring Boot的自动配置以及CommandRunner...Spring Boot的自动配置 在Spring Boot项目中,xxxApplication.java会作为应用程序的入口,负责程序启动以及一些基础性的工作。...打开SpringBootApplication注解可以发现,它是由其他几个类组合而成的:@Configuration(等同于spring中的xml配置文件,使用Java文件做配置可以检查类型安全)、@EnableAutoConfiguration...(自动配置,稍后细讲)、@ComponentScan(组件扫描,大家非常熟悉的,可以自动发现和装配一些Bean)。...Spring Boot的自动配置 可以看到类似Building JPA container EntityManagerFactory for persistence unit 'default、HHH000412
---- 在上篇博客初识Spring Boot框架中我们初步见识了SpringBoot的方便之处,很多小伙伴可能也会好奇这个Spring Boot是怎么实现自动配置的,那么今天我就带小伙伴我们自己来实现一个简单的...Spring Boot 自动配置的案例,看看这一切到底是怎么发生的。...假设我的需求是这样的:当我的项目中存在某个类的时候,系统自动为我配置该类的Bean,同时,我这个Bean的属性还可以在application.properties中进行配置,OK,就这样一个需求,我们来看看怎么实现...2.添加依赖 由于我们要使用Spring Boot的自动配置功能,所以在工程创建成功之后首先要添加Spring Boot自身的自动配置作为依赖,如下: <groupId...7.在项目中使用 OK,经过上面几个步骤我们的自动配置功能就算死写好了,接下来我们要在自己的项目中来使用它了,正常情况下做好自动配置类之后我们需要将之上传到 maven 私服上然后直接在项目中引用,也可以将之安装到本地库
尽可能地进行自动配置,减少了用户需要动手写的各种冗余配置项,Spring Boot提倡无XML配置文件的理念,使用Spring Boot生成的应用完全不会生成任何配置代码与XML配置文件。...似乎有点跑题了,不过说了这么多,我想要强调的是,Spring Cloud中的每个组件都是基于Spring Boot构建的,而理解了Spring Boot的自动配置的原理,显然也是有好处的。...在Spring容器中是否已经注册了某种类型的Bean(如未注册,我们可以让其自动注册到容器中,上一条同理)。 一个文件是否在特定的位置上。 一个特定的系统属性是否存在。...在Spring的配置文件中是否设置了某个特定的值。...当你揭开神秘的面纱,去探索本质时,发现其实Spring Boot自动配置的原理就是如此简单,在了解这些知识后,你完全可以自己去实现自定义的自动配置类,然后编写出自定义的starter。
1.4.1.Spring中配置SpringMVC 1.4.2.SpringBoot中的SpringMVC配置 2.Springboot怎么启动TomCat的 写在前面 自从SpringBoot问世以来...细心的同学可以看到了, 这些类全部都是AutoConfiguration结尾的,顾名思义,这些类就是我们要找的自动配置类!...通过SpringFactoriesLoader,找到依赖包中META-INF/spring.factories文件,将文件中的自动配置类找出来,加载进内存! 1.4.提问!...1.4.1.Spring中配置SpringMVC 在Spring中,我们首先要定义:spring-mvc.xml作为SpringMVC的配置文件。...好了, 现在DispatcherServletAutoConfiguration配置类配置完成,就可以开始WebMvcAutoConfiguration的自动配置了。
搞 Spring Boot 的小伙伴都知道,Spring Boot 中的配置文件有两种格式,properties 或者 yaml,一般情况下,两者可以随意使用,选择自己顺手的就行了,那么这两者完全一样吗...狡兔三窟 首先 application.yaml 在 Spring Boot 中可以写在四个不同的位置,分别是如下位置: 项目根目录下的 config 目录中 项目根目录下 classpath 下的 config...这个属性,在第一个属性中,表示自己重新定义配置文件的位置,项目启动时就按照定义的位置去查找配置文件,这种定义方式会覆盖掉默认的四个位置,也可以使用第二种方式,第二种方式则表示在四个位置的基础上,再添加几个位置...servers = new ArrayList(); public List getServers() { return this.servers; } } 项目启动后,配置中的数组会自动存储到...,yaml 配置是有序的,这一点在有些配置中是非常有用的,例如在 Spring Cloud Zuul 的配置中,当我们配置代理规则时,顺序就显得尤为重要了。
领取专属 10元无门槛券
手把手带您无忧上云