Red de conocimiento informático - Problemas con los teléfonos móviles - Inicialización de primavera

Inicialización de primavera

Basado en Spring 4.1.6

Línea 29 super(parent); Crear una instancia de la clase principal, AbstractXmlApplicationContext, AbstractRefreshableConfigApplicationContext, AbstractRefreshableApplicationContext, AbstractApplicationContext

Línea 32 actualizar ( );

Línea 4

prepareRefresh();

// Dile a la subclase que actualice el BeanFactory interno.

Línea 38

FinishRefresh();

Línea 7 ConfigurableListableBeanFactory beanFactory = getFreshBeanFactory()

Línea 2 refrescoBeanFactory(); Antes de crear una instancia de AbstractRefreshableApplicationContext, este método se implementó en las subclases AbstractRefreshableApplicationContext y GenericApplicationContext.

Línea 13

DefaultListableBeanFactory beanFactory = createBeanFactory();

Línea 10

XmlBeanDefinitionReader beanDefinitionReader = new XmlBeanDefinitionReader(beanFactory

Línea 31, loadBeanDefinitions(resources);

Porque la interfaz BeanDefinitionReader tiene muchas clases de implementación y XmlBeanDefinitionReader es solo una de las subclases, como se define en el paso 4.

Línea 5, documentReader.registerBeanDefinitions(doc, createReaderContext(resource));

Línea 23, parseBeanDefinitions(root, this.delegate)

Línea 24); , parseBeanDefinitions(root, this.delegate);

Línea 25, documentReader.delegate);

Línea 13, en el análisis básico de elementos con nombre de Spring (importación, bean, beans, alias) :

parseDefaultElement(ele, delegado);

Análisis de elementos extendidos: delegado.parseCustomElement(ele); Los elementos extendidos están relacionados con aop, discutiremos un poco más adelante.

El siguiente es un ejemplo de análisis de beans.

Lo anterior completa la lectura, el análisis y el registro, y luego ingresa 2, AbstractApplicationContext FinishBeanFactoryInitialization(beanFactory);

Luego. continúe Suplemento,

Al crear una instancia de DefaultListableBeanFactory, llame a preInstantiateSingletons para completar la creación de instancias de beans, no de beans abstractos, beans singleton o carga diferida.

El método refresco() llama a FinishBeanFactoryInitialization(beanFactory);

La línea 10, método getBean, apunta a 21 o 22, que debería apuntar a 21, DefaultListableBeanFactory.

Línea 41, objeto singletonInstance = getSingleton(beanName); getSingletonObject debe colocarse en el paso 18. ¿Es inútil el paso 17? Quizás se use internamente.

recorrido de getBean

objeto público getBean(nombre de cadena) lanza BeansException {

return doGetBean(nombre, nulo, nulo, falso); p> }

getBean --gt; doGetBean --gt; createBean --gt; doCreateBean --gt; createBeanInstance --gt; , mbd, args);

Línea 31, objeto beanInstance = doCreateBean(beanName, mbd, args);

Línea 22, instanciaWrapper = createBeanInstance(beanName, mbd, args);

Última línea, instantiateBean(beanName, mbd)

Línea 14, beanInstance = getInstantiationStrategy ().instantiate(mbd, beanName, parent); Ejecutado, encapsulado por BeanWrapper.

Línea 9, devuelve getInstantiationStrategy().instantiate(mbd, beanName, parent);

Línea 31, devuelve BeanUtils.instantiateClass(constructorToUse

protected); Object doCreateBean(final String beanName, final RootBeanDefinition mbd, final Object[] args)

set mbd .postProcessed = true

Si no hay ningún Bean singleton en el caché, necesita; Cree un Bean singleton desde cero. Aquí sobrecargamos principalmente el método getSingleton() para cargar el Bean singleton.

Incluye métodos antes y después, a saber, beforeSingletonCreation(beanName); y afterSingletonCreation(beanName);