public class SpringApplication extends Object
這個類能用來引導java方法和啟動Spring應用程序的類。默認情況下,類將引導你啟動以下應用程序:
- 創建一個適當的ApplicationContext實例(依賴于你的路徑)
- 注冊一個CommandLinePropertySource來將命令行參數展示為Spring properties
- 刷新應用上下文,載入單例bean
- 觸發部分CommandLineRunner類
大多數情況,從你應用的主方法可以直接訪問static run(Class String[]).
@Configuration
@EnableAutoConfiguration
public class MyApplication {
// ... Bean definitions
public static void main(String[] args) throws Exception {
SpringApplication.run(MyApplication.class, args);
}
}
對于更高級的配置,SpringApplication實例可以在運行之前創建和自定義:
public static void main(String[] args) throws Exception {
SpringApplication application = new SpringApplication(MyApplication.class);
// ... customize application settings here
application.run(args)
}
SpringApplication能從不動的資源文件中讀取beans。通常建議你使用單個@Configuration類來引導你的應用程序,但你也可以從以下位置設置源:
- 由AnnotatedBeanDefinitionReader加載的完全限定的類名
- 由XmlBeanDefinitionReader加載的XML資源的位置,或由GroovyBeanDefinitionReader加載的groovy腳本
- 要由ClassPathBeanDefinitionScanner掃描的包的名稱
配置屬性也綁定到SpringApplication。這樣可以動態地設置SpringApplication屬性,如額外的源(“spring.main.sources” - 一個CSV列表),用于指示Web環境的標志(“spring.main.web-application-type = none”)或標志關閉橫幅(“spring.main.banner-mode = off”)。
字段詳情
DEFAULT_CONTEXT_CLASS
public static final String DEFAULT_CONTEXT_CLASS
非Web環境默認使用的應用程序上下文的類名稱。
DEFAULT_WEB_CONTEXT_CLASS
public static final String DEFAULT_WEB_CONTEXT_CLASS
Web環境默認使用的應用程序上下文的類名稱。
DEFAULT_REACTIVE_WEB_CONTEXT_CLASS
public static final String DEFAULT_REACTIVE_WEB_CONTEXT_CLASS
默認情況下反應式Web環境將使用的應用程序上下文的類名稱。
BANNER_LOCATION_PROPERTY_VALUE
public static final String BANNER_LOCATION_PROPERTY_VALUE
默認banner位置。
BANNER_LOCATION_PROPERTY
public static final String BANNER_LOCATION_PROPERTY
banner位置屬性鍵
構造函數詳情
public SpringApplication(Class<?>... primarySources)
創建一個新的SpringApplication實例。應用程序上下文將從指定的主源加載bean(有關詳細信息,請參閱類級別的文檔)。在調用run(String ...)之前,可以自定義該實例。
primarySources - 主bean源
public SpringApplication(ResourceLoader resourceLoader, Class<?>... primarySources)
創建一個新的SpringApplication實例。應用程序上下文將從指定的主源加載bean(有關詳細信息,請參閱類級別的文檔)。在調用run(String ...)之前,可以自定義該實例。
resourceLoader - 要使用的資源加載器
primarySources - 主bean源
方法詳情
public ConfigurableApplicationContext run(String... args)
運行Spring應用程序,創建和刷新一個新的ApplicationContext。
args - 應用程序參數(通常從Java main方法傳遞)
protected void configureEnvironment(ConfigurableEnvironment environment, String[] args)
以該順序委派configurePropertySources(ConfigurableEnvironment,String [])和configureProfiles(ConfigurableEnvironment,String []))的模板方法。覆蓋此方法以完全控制環境定制,或分別對屬性源或配置文件進行細粒度控制。
protected void configurePropertySources(ConfigurableEnvironment environment, String[] args)
在此應用程序的環境中添加,刪除或重新排序任何PropertySources。
environment - 應用的環境
args - 傳遞給run方法的參數
protected void configureProfiles(ConfigurableEnvironment environment, String[] args)
為此應用程序環境配置哪些配置文件處于活動狀態(或默認情況下處于活動狀態)。通過spring.profiles.active屬性可以在配置文件處理期間激活附加配置文件。
environment - 應用的環境
args - 傳遞給run方法的參數
protected void bindToSpringApplication(ConfigurableEnvironment environment)
將環境綁定到SpringApplication。
environment - 綁定的環境
protected ConfigurableApplicationContext createApplicationContext()
用于創建ApplicationContext的策略方法。默認情況下,該方法將在任何明確設置的應用程序上下文或應用程序上下文類之后才能返回到合適的默認值。
return:應用程序上下文(尚未刷新)
protected void postProcessApplicationContext(ConfigurableApplicationContext context)
應用任何相關的后處理ApplicationContext。子類可以根據需要應用其他處理。
context - 應用上下文
protected void applyInitializers(ConfigurableApplicationContext context)
在應用任何ApplicationContextInitializer之前刷新它。
context - 配置的ApplicationContext(尚未刷新)
protected void logStartupInfo(boolean isRoot)
調用記錄啟動信息,子類可以覆蓋以添加其他日志記錄。
isRoot - 如果此應用程序是上下文層次結構的根,則為true
protected void logStartupProfileInfo(ConfigurableApplicationContext context)
調用以記錄活動的配置文件信息。
context - 應用程序上下文
protected Log getApplicationLog()
返回應用程序的日志。默認情況下將被推斷。
return:應用程序日志
protected void load(ApplicationContext context, Object[] sources)
將bean加載到應用程序上下文中。
context - 將bean加載到源的上下文
sources - 要加載的源
public ResourceLoader getResourceLoader()
將在ApplicationContext中使用的ResourceLoader。
return:resourceLoader將在ApplicationContext中使用的資源加載器(如果是默認值,則為null)
public ClassLoader getClassLoader()
將在ApplicationContext(如果resourceLoader設置,或上下文類加載器(如果不為null))或Spring ClassUtils類的加載器中使用的ClassLoader。
return:類加載器(永不為null)
protected org.springframework.boot.BeanDefinitionLoader createBeanDefinitionLoader(BeanDefinitionRegistry registry, Object[] sources)
用于創建BeanDefinitionLoader的工廠方法。
registry - bean定義的注冊表
sources - 載入的資源
return:將用于加載bean的BeanDefinitionLoader
protected void refresh(ApplicationContext applicationContext)
刷新底層的ApplicationContext。
applicationContext - 應用程序上下文進行刷新
protected void afterRefresh(ConfigurableApplicationContext context, ApplicationArguments args)
在上下文刷新后調用。
context - 應用的上下文
args - 應用的程序參數
protected void registerLoggedException(Throwable exception)
注冊給定的異常已被記錄。默認情況下,如果在主線程中運行,此方法將抑制堆棧跟蹤的附加打印。
execption:記錄的異常
public Class<?> getMainApplicationClass()
返回被推導或顯式配置的主應用程序類。
return:主應用程序類或null
public void setMainApplicationClass(Class<?> mainApplicationClass)
設置將用作日志源并獲取版本信息的特定主應用程序類。默認情況下,將推導出主應用程序類。如果沒有顯式應用程序類,可以設置為null。
mainApplicationClass - 要設置的mainApplicationClass或null
public WebApplicationType getWebApplicationType()
返回正在運行的Web應用程序的類型。
public void setWebApplicationType(WebApplicationType webApplicationType)
設置要運行的Web應用程序的類型。如果沒有明確設置,將基于類路徑推斷Web應用程序的類型。
webApplicationType - Web應用程序類型
public void setHeadless(boolean headless)
設置應用程序是否headless,不應實例化AWT。默認為true,以防止出現java圖標。
headless - 如果應用程序headless
public void setBanner(Banner banner)
設置當沒有提供靜態橫幅文件時將用于打印橫幅的橫幅實例。
banner - 要使用的Banner實例
public void setBannerMode(Banner.Mode bannerMode)
設置應用程序運行時顯示橫幅的模式。默認為Banner.Mode.CONSOLE。
bannerMode - 用于顯示橫幅的模式
public void setLogStartupInfo(boolean logStartupInfo)
設置應用程序啟動時是否應該記錄應用程序信息。默認為true。
logStartupInfo - 如果啟動信息應該被記錄。
public void setAddCommandLineProperties(boolean addCommandLineProperties)
設置是否應將CommandLinePropertySource添加到應用程序上下文中以便公開參數。默認為true。
addCommandLineProperties - 如果要暴露命令行參數
public void setDefaultProperties(Map<String,Object> defaultProperties)
設置除了現有環境中的默認環境屬性之外將使用的默認環境屬性。
defaultProperties - 要設置的其他屬性
public void setDefaultProperties(Properties defaultProperties)
方便的替代setDefaultProperties(Map)。