@SpringBootConfiguration与@Configuration有什么区别?

时间:2019-07-06 00:00:20

标签: spring spring-boot

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

3 个答案:

答案 0 :(得分:2)

SpringBootConfiguration

  

表示一个类提供Spring Boot应用程序 @Configuration 。可以用作Spring标准 @Configuration 注释的替代方法,以便可以自动找到配置(例如在测试中)。   应用程序只能包含一个 @SpringBootConfiguration ,大​​多数惯用的Spring Boot应用程序都将从 @SpringBootApplication 继承它。

来源

Documentation on SpringBootConfiguration

答案 1 :(得分:1)

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

@SpringBootApplication
-------> @SpringBootConfiguration
       -------> @Configuration

@SpringBootApplication

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 {
...}

@SpringBootConfiguration

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
public @interface SpringBootConfiguration {

}

@Configuration

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

答案 2 :(得分:1)

根据Spring文档,@SpringBootConfiguration只是一个 替代Spring标准的@Configuration注释。唯一的 两者的区别在于@SpringBootConfiguration允许 自动找到的配置。

这在编写测试时特别有用。

https://www.javacodegeeks.com/2019/09/springbootconfiguration-annotation-spring-boot.html