This question already has answers here:
Meaning of the import statement in a Java file
                                
                                    (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。没有导入,您将得到一个编译错误。

09-05 20:30