SpringBoot导入的目的,然后排除模式?

时间:2018-11-15 22:13:40

标签: java spring-boot

作为JS开发人员,我对Java相对较新,在SpringBoot应用程序上工作时,我看到了一种使好奇心达到顶峰的模式:

Application.java中有几个import类,然后在exclude中将它们标记为@SpringBootApplication,例如

import org.springframework.boot.autoconfigure.data.database.DataBaseAutoConfiguration;
...
@SpringBootApplication(
    exclude = {DataBaseAutoConfiguration.class, ...}
)
除了此处,在代码库中的其他任何地方均未引用

DataBaseAutoConfiguration

有人可以解释这种模式的目的吗? import这个类,然后立即在配置中exclude一个类,感觉很奇怪

为什么没有这样的东西:

exclude = {"DataBaseAutoConfiguration", ...}然后在Spring中查找要忽略的类,从而避免明显的“无用”导入?

或:

// import nothing
@SpringBootApplication

1 个答案:

答案 0 :(得分:5)

tl; dr import是Java语言功能,exclude是Spring Boot功能。

您必须import个类才能在您的代码中引用它们。在这种情况下,exclude是特定于Spring Boot的,它只是指示Spring上下文不触发DataBaseAutoConfiguration内部的任何配置bean。从技术上讲,exclude@SpringBootApplication批注内的字段。

仅需要导入,因此您可以在代码中引用DataBaseAutoConfiguration。如果不导入,则会出现编译错误。

相关问题