【发布时间】:2018-11-15 22:13:40
【问题描述】:
我对 Java 比较陌生,作为一名 JS 开发人员,正在开发一个 SpringBoot 应用程序,我看到一个模式让我的好奇心达到顶峰:
在Application.java 中有几个import 类,然后在@SpringBootApplication 中标记为exclude,例如
import org.springframework.boot.autoconfigure.data.database.DataBaseAutoConfiguration;
...
@SpringBootApplication(
exclude = {DataBaseAutoConfiguration.class, ...}
)
DataBaseAutoConfiguration 在代码库中的任何其他地方都没有被引用,除了这里。
有人可以解释这种模式的目的吗?感觉很奇怪import这个类然后立即在配置中exclude它
为什么没有类似的东西:
exclude = {"DataBaseAutoConfiguration", ...} 然后在 Spring 中查找要忽略的类,避免明显的“无用”导入?
或:
// import nothing
@SpringBootApplication
【问题讨论】:
-
“Java 文件中 import 语句的含义”是题外话,对这个问题没有帮助
-
请澄清。如果您了解
import的作用,您是否只是在问SpringBootApplication的exclude元素的作用? -
exclude的类型是Class[],因此它需要Class值,而不是您建议的String值。有一个excludeName需要一个String[],但您需要提供完全限定的类型名称,所以excludeName = {"org.springframework.boot.autoconfigure.data.database.DataBaseAutoConfiguration"}。使用Class字面量可以使这种类型更加安全。 -
我知道 import 的工作原理,以及 exclude 的工作原理。问题更多的是两者如何互动,感觉就像
import thing...unimport thing并且脱颖而出 -
import除了让您使用类的简单名称外没有任何作用。您很可能拥有exclude = {org.springframework.boot.autoconfigure.data.database.DataBaseAutoConfiguration.class}而没有import声明。语言特征与某些注释的元素完全无关。
标签: java spring-boot