This question already has answers here:
Meaning of the import statement in a Java file
(5个答案)
2年前关闭。
作为JS开发人员,我对Java相对较新,在SpringBoot应用程序上工作时,我看到了一种使好奇心达到顶峰的模式:
在
除了此处,在代码库的其他任何地方均未引用
有人可以解释这种模式的目的吗?对
为什么没有这样的东西:
要么:
(5个答案)
2年前关闭。
作为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
最佳答案
tl; dr import
是Java语言功能,exclude
是Spring Boot功能。
您必须import
类才能在代码中引用它们。在这种情况下,exclude
是特定于Spring Boot的,只是指示Spring上下文不触发DataBaseAutoConfiguration
内部的任何配置bean。从技术上讲,exclude
是@SpringBootApplication
批注内的字段。
仅需要导入,因此您可以在代码中引用DataBaseAutoConfiguration
。没有导入,您将得到一个编译错误。