Spring Boot的@Configuration和自动配置有什么区别?

我们都知道springboot的这个原理@SpringBootApplication = @Configuration + @EnableAutoConfiguration + @ComponentScan 那么这三个注释代表什么意思?@Configuration 和 @EnableAutoConfiguration都有配置,有什么区别? @EnableAutoConfiguration:启用Spring Boot的自动配置机制,类似在java代码中自动import,属于自动导入。 这是告诉Spring Boot根据你添加的jar依赖关系“猜测”你想要如何配置Spring。如果你在pom.xml中配置了依赖spring-boot-starter-web,那么其jar包会加入到类路径classpath,spring会自动配置Tomcat和Spring MVC。 自动配置spring mvc是什么意思?如果不是自动配置,我们需要手工配置如下:

<servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/todo-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

当我们使用Hibernate / JPA时,我们还需要配置数据源,实体管理器工厂,事务管理器等。 使用自动配置以后,就不需要手工配置了。 @Configuration:有自动导入就有属于自动导出,需要配合该类中方法的@bean,这就相当于一个xml配置:

<beans>
 <bean id="b" class="springsimple.B"/>
 <bean id="a" class="springsimple.A"/>
</beans>

@bean等于一行bean配置,整个 Xml配置文件等于@Configuration注释的类,spring已经从xml配置为主模式转变到类注释为主的代码模式,估计以后走向函数式方式。 上面这份配置中的A和B类型如果被其他地方需要,比如在其他某处有:

public class C{
   @Autowire
    private A a;

}

那么在C类就可以使用你提供的A类型了,所以说是导出作用,提供bean源。 @ComponentScan:扫描所有使用@Component 的类,不管自动导入还是导出,首先需要告诉spring boot到哪里去找导入导出的原料。 @SpringBootApplication注解相当于使用@Configuration,@EnableAutoConfiguration以及@ComponentScan 与他们的默认属性。

原文发布于微信公众号 - Linyb极客之路(gh_c420b2cf6b47)

原文发表时间:2018-10-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏后台及大数据开发

docker:(4)利用WebHook实现持续集成

在项目调试测试阶段,可能经常需要重复上面的步骤,以便将最新代码部署到特定环境供测试人员或其他人员使用

13310
来自专栏我是攻城师

Spring Boot如何集成duboo服务

37470
来自专栏zhisheng

Spring Boot 2.0 迁移指南

前提 本文档将帮助您把应用程序迁移到 Spring Boot 2.0。 在你开始之前 首先,Spring Boot 2.0需要Java 8或更高版本。Java ...

1.1K140
来自专栏史上最简单的Spring Cloud教程

SpringBoot非官方教程 | 第十篇: 用spring Restdocs创建API文档

这篇文章将带你了解如何用spring官方推荐的restdoc去生成api文档。本文创建一个简单的springboot工程,将http接口通过Api文档暴露出来...

26170
来自专栏子勰随笔

在Linux服务器(ubuntu 16)上部署多套PHP环境

30860
来自专栏IT笔记

SpringBoot开发案例之整合日志管理

有一种力量无人能抵挡,它永不言败生来倔强。有一种理想照亮了迷茫,在那写满荣耀的地方。

50980
来自专栏Java 源码分析

SpringBoot 笔记 ( 一 ):启动流程

SpringBoot 笔记(一): 启动流程 1. 配置开发环境 1. 创建 Maven 项目 然后我们首先在项目里面加上编译环境,防止每一次更新 Maven ...

32740
来自专栏决胜机器学习

SpringBoot工作机制

SpringBoot工作机制 (原创内容,转载请注明来源,谢谢) 一、概述 Spring Boot是对于Spring框架“约定优于配置”理念的实践产物。 一个最...

43460
来自专栏java达人

Springboot 注解如何工作

作者:Parmod 译者:java达人 来源:http://parmodarora.com/2016/01/06/springbootapplication-a...

294100
来自专栏IT笔记

SpringBoot开发案例之整合日志管理

有一种力量无人能抵挡,它永不言败生来倔强。有一种理想照亮了迷茫,在那写满荣耀的地方。 ? 00.jpg 概述 参考文档:Logging 这里顺便引用以下部分原文...

54980

扫码关注云+社区

领取腾讯云代金券