作为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
答案 0 :(得分:5)
tl; dr import
是Java语言功能,exclude
是Spring Boot功能。
您必须import
个类才能在您的代码中引用它们。在这种情况下,exclude
是特定于Spring Boot的,它只是指示Spring上下文不触发DataBaseAutoConfiguration
内部的任何配置bean。从技术上讲,exclude
是@SpringBootApplication
批注内的字段。
仅需要导入,因此您可以在代码中引用DataBaseAutoConfiguration
。如果不导入,则会出现编译错误。