Spring boot所学注解@EnableAutoConfiguration和@SpringbootApplication(main函数)

本文深入探讨了SpringBoot中@EnableAutoConfiguration与@SpringBootApplication注解的区别及作用,详细解析了@EnableAutoConfiguration注解的实现机制,包括如何自动配置Bean、定位主应用类以及使用root包进行组件扫描。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@EnableAutoConfiguration和@SpringbootApplication的区别

SpringBoot采取了这些注解的优点,在@EnableAutoConfiguration注解中的这些注解被用来执行自动配置(auto-configuration)。让我们来近距离的看一下@EnableAutoConfiguration注解并看一看它背后的逻辑。   

@Target({ElementType.TYPE})

@Retention(RetentionPolicy.RUNTIME)

@Documented

@Inherited

@AutoConfigurationPackage

@Import({EnableAutoConfigurationImportSelector.class})

public @interfaceEnableAutoConfiguration {

    String ENABLED_OVERRIDE_PROPERTY= "spring.boot.enableautoconfiguration";

 

    Class<?>[] exclude() default {};

 

    String[] excludeName() default {};

}

我们知道,这个类会尝试去猜测和配置应用中需要的bean。auto-configuration类是基于classpath(pom.xml的配置)的配置和应用中定义的beans被使用,但是发挥这种魔力的是org.springframework.boot.autoconfigure.EnableAutoConfigurationImportSelector类,该类可以找到所有必须的配置类。

定位main应用类:建议将main应用类放在位于其他类上面的根包(rootpackage)中。通常使用@EnableAutoConfiguration 注解你的main类,并且暗地里为某些项定义了一个基础“search package”。例如,如果你正在编写一个JPA应用,在被 @EnableAutoConfiguration所注解的类的包中的所有@Entity注解的项都将会被检索到。

使用root包允许在不需要指定basePackage属性的情况下使用@ComponentScan注解。如果main类位于根包中,你也可以使用@SpringBootApplication 注解。

 

 你可以添加@SpringBootApplication或@ComponentScan注解而不需要任何参数。你的所有应用程序组件(@Component , @Service , @Repository , @Controller 等)将被自动注册为Spring Beans。

很多Spring Boot开发者总是使用@Configuration , @EnableAutoConfiguration 和 @ComponentScan 注解他们的main类。由于这些注解被如此频繁地一块使用, Spring Boot提供一个方便的@SpringBootApplication 选择。@SpringBootApplication 注解等价于以默认属性使用@Configuration , @EnableAutoConfiguration 和 @ComponentScan 。

原文:https://blog.youkuaiyun.com/u014590757/article/details/79544883 
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值