java @SpringBootConfiguration与 @Configuration 之间的区别是什么?

oxcyiej7  于 2023-01-24  发布在  Java
关注(0)|答案(3)|浏览(472)

@SpringBootConfiguration@Configuration有什么区别?我找不到太多细节。

uhry853o

uhry853o1#

根据Sping Boot 文档(下面的层次结构),我们可以说@Configuration@SpringBootConfiguration的一部分,最终具有@SpringBootApplication

@SpringBootApplication
-------> @SpringBootConfiguration
       -------> @Configuration
  • @Spring启动应用程序 *
Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {
        @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
        @Filter(type = FilterType.CUSTOM,
                classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
...}
  • @Spring启动配置 *
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
public @interface SpringBootConfiguration {

}
  • @Configuration *
@Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Component
    public @interface Configuration {
}
gr8qqesn

gr8qqesn2#

Spring启动配置

指示类提供Sping Boot 应用程序**@Configuration**。可用作Spring的标准**@Configuration注解的替代方法,以便可以自动查找配置(例如在测试中)。应用程序应始终只包含一个@SpringBootConfiguration**,并且大多数惯用的Spring Boot应用程序将从**@SpringBootApplication**继承它。

资料来源

Documentation on SpringBootConfiguration

mdfafbf1

mdfafbf13#

根据Spring文档,@SpringBootConfiguration只是Spring标准@Configuration注解的一种替代,两者之间的唯一区别是@SpringBootConfiguration允许自动查找配置。
这在编写测试时特别有用。
https://www.javacodegeeks.com/2019/09/springbootconfiguration-annotation-spring-boot.html

相关问题