注意: 以下涉及 Spring Boot 源码 均来自版本 2.7.9,其他版本有所出入,可自行查看源码。
2.1 ApplicationArguments
首先来看 应用程序启动参数接口类 ApplicationArguments
的源码:
java
代码解读
复制代码
public interface ApplicationArguments { String[] getSourceArgs(); Set<String> getOptionNames(); boolean containsOption(String name); List<String> getOptionValues(String name); List<String> getNonOptionArgs(); }
ApplicationArguments
接口共包含 5
个方法,均用于运行 SpringApplication
的参数的访问:
getSourceArgs
:该方法返回传递给应用程序的原始未处理参数。getOptionNames
:该方法返回所有选项参数的名称,如果没有则返回一个空集。例如,如果参数是"--foo=bar --debug"
,则返回值应为["foo", "debug"]
。containsOption
:该方法返回从参数中解析出的选项参数集合中是否包含给定名称的选项。如果参数中包含给定名称的选项,则返回true
。getOptionValues
:该方法返回与给定名称的参数选项关联的值集合。- 如果选项存在且没有参数(例如:
"--foo"
),则返回空集合([]
)。 - 如果选项存在且有一个值(例如:
"--foo=bar"
),则返回包含一个元素的集合(["bar"]
)。 - 如果选项存在且有多个值(例如:
"--foo=bar --foo=baz"
),则返回一个包含每个值的元素的集合(["bar", "baz"]
)。 - 如果选项不存在,则返回
null
。
- 如果选项存在且没有参数(例如:
getNonOptionArgs
:该方法返回解析出的非选项参数的集合,如果没有则返回一个空列表。
2.2 DefaultApplicationArguments
在 SpringApplication
的