๋น์ ์ฝ๋ ๋ฐฉ๋ฒ
ConfigurableApplicationContext ๋ฅผ ์ ํํ๋ ๋ฐฉ๋ฒ
SpringApplication ์ run ์์
createApplicationContext() ๋ฅผ ํตํด ์ ์ ๋๋ค.
createApplicationContext() ์์๋ SpringApplication ์ด ์์ฑ๋ ๋ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์์ฑ๋ ApplicationContextFactory ๋ก applicationContext ๋ฅผ ๋ง๋ ๋ค. ๋ง๋ค ๋ webApplicationType(enum) ์ ์ธ์๋ก ์ฃผ๋๋ฐ, ์ด ์ธ์๋ SpringApplication ์ ์์ฑ์์์ deduceFromClasspath() ๋ฉ์๋๋ฅผ ํตํด ์ค์ ๋๋ค.
ํด๋น ๋ฉ์๋์์๋ DispatcherHandler ๊ฐ class loader ์ ์๊ณ , DispatcherServlet ๊ณผ ServletContainer ๊ฐ ์์ด์ผ REACTIVE ๋ฅผ ๋ฐํํ๊ณ ์๋๋ฉด SERVLET ์ ๋ฐํํ๋ค.
ApplicationContextFactory ์ ๊ตฌํ์ฒด๋ DefaultApplicationContextFactory ์ธ๋ฐ, ์ฌ๊ธฐ์ create ๋ฅผ ํ๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก context ๋ AnnotationConfigReactiveWebServerApplicationContext ์ด ์ ์ ๋๋ค.
๋น์ ์ธ์ ๋ฑ๋ก๋ ๊น
โข
SpringApplication.createApplicationContext()
โฆ
DefaultApplicationContextFactory.create()
โฆ
DefaultApplicationContextFactory.getFromSpringFactories()
โฆ
ReactiveWebServerApplicationContextFactory.create(WebApplicationType)
โฆ
ReactiveWebServerApplicationContextFactory.createContext()
โฆ
AnnotationConfigReactiveWebServerApplicationContext()
โฆ
initAnnotationConfigReactiveWebServerApplicationContext. newAnnotatedBeanDefinitionReader(this) โ this = ACRWSAC
โฆ
init AnnotatedBeanDefinitionReader.AnnotationConfigUtils.registerAnnotationConfigProcessors()
โฆ
AnnotationConfigUtils.registerAnnotationConfigProcessors()
โฆ
AnnotationConfigUtils.registerPostProcessor()
โฆ
registry.registerBeanDefinition() registry โ GenericApplicationContext
โฆ
GenericApplicationContext.registerBeanDefinition()
โฆ
DefaultListableBeanFactory.registerBeanDefinition()
๋น์ ์ด๋์ ๋ฑ๋ก๋ ๊น
DefaultListableBeanFactory ์ registerBeanDefinition