构造SpringApplication就是利用SPI缓存了一些实现类,其他的逻辑都在run方法里面
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public SpringApplication(@Nullable ResourceLoader resourceLoader, Class<?>... primarySources) { this.resourceLoader = resourceLoader; Assert.notNull(primarySources, "'primarySources' must not be null"); this.primarySources = new LinkedHashSet<>(Arrays.asList(primarySources)); this.properties.setWebApplicationType(WebApplicationType.deduce()); this.bootstrapRegistryInitializers = new ArrayList<>( getSpringFactoriesInstances(BootstrapRegistryInitializer.class)); setInitializers((Collection) getSpringFactoriesInstances(ApplicationContextInitializer.class)); setListeners((Collection) getSpringFactoriesInstances(ApplicationListener.class)); this.mainApplicationClass = deduceMainApplicationClass(); }
|