@startuml title SpringApplication context 分析过程 class SpringApplication { private boolean webEnvironment; } interface ConfigurableWebApplicationContext extends ConfigurableApplicationContext,WebApplicationContext{ void setServletContext(ServletContext servletContext); void setServletConfig(ServletConfig servletConfig); void setConfigLocation(String configLocation); String[] getConfigLocations(); } interface ApplicationContext extends HierarchicalBeanFactory,MessageSource,ApplicationEventPublisher,ResourcePatternResolver{ String getId(); String getApplicationName(); String getDisplayName(); long getStartupDate(); ApplicationContext getParent(); AutowireCapableBeanFactory getAutowireCapableBeanFactory() throws IllegalStateException; } interface ConfigurableApplicationContext{ } interface Lifecycle{ } interface Closeable{ public void close() throws IOException; } interface EnvironmentCapable{ Environment getEnvironment(); } interface ListableBeanFactory extends BeanFactory{ String[] getBeanNamesForType(ResolvableType type); } interface BeanFactory{ Object getBean(String name) throws BeansException; T getBean(String name, Class requiredType) throws BeansException; T getBean(Class requiredType) throws BeansException; } interface HierarchicalBeanFactory extends BeanFactory{ BeanFactory getParentBeanFactory(); } interface MessageSource{ String getMessage(String code, Object[] args, String defaultMessage, Locale locale); } interface ApplicationEventPublisher{ void publishEvent(ApplicationEvent event); } interface ResourcePatternResolver extends ResourceLoader{ Resource[] getResources(String locationPattern) throws IOException; } interface ResourceLoader{ Resource getResource(String location); ClassLoader getClassLoader(); } ApplicationContext <|-- ConfigurableApplicationContext : 继承关系 Lifecycle <|-- ConfigurableApplicationContext : 继承关系 Closeable <|-- ConfigurableApplicationContext : 继承关系 EnvironmentCapable <|-- ApplicationContext:继承关系 ListableBeanFactory <|-- ApplicationContext:继承关系 @enduml