引用
AbstractApplicationContext.refresh->finishBeanFactoryInitialization->beanFactory.preInstantiateSingletons()->getBean->doGetBean->getSingleton->singletonFactory.getObject()->createBean->doCreateBean->initializeBean
1. initializeBean的时候调用invokeAwareMethods(beanName, bean);(org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(String, Object, RootBeanDefinition))
这时会:
1.1 调用BeanNameAware的setBeanName(beanName)方法
1.2 调用BeanClassLoaderAwarere的setBeanClassLoader(getBeanClassLoader())方法
1.3 调用BeanFactoryAware的setBeanFactory(AbstractAutowireCapableBeanFactory(AbstractAutowireCapableBeanFactory.this)方法
2 initializeBean的时候调用applyBeanPostProcessorsBeforeInitialization(wrappedBean, beanName),获取BeanPostProcessors,然后遍历调用每个posetProcessor的postProcessBeforeInitialization方法;org.springframework.context.support.ApplicationContextAwareProcessor的postProcessBeforeInitialization(Object, String)方法会执行invokeAwareInterfaces(bean)
这时会:
2.1 调用EnvironmentAware的setEnvironment(this.applicationContext.getEnvironment())方法
2.2 调用EmbeddedValueResolverAware的setEmbeddedValueResolver(new EmbeddedValueResolver(this.applicationContext.getBeanFactory())方法
2.3 调用ResourceLoaderAware的setResourceLoader(this.applicationContext)方法
2.4 调用ApplicationEventPublisherAware的setApplicationEventPublisher(this.applicationContext)方法
2.5 调用MessageSourceAware的setMessageSource(this.applicationContext)方法
2.6 调用ApplicationContextAware的setApplicationContext(this.applicationContext)方法
org.springframework.web.context.support.ServletContextAwareProcessor的postProcessBeforeInitialization(Object, String)中会完成:
2.7 调用ServletContextAware的setServletContext(getServletContext())方法
2.8 调用ServletConfigAware的setServletConfig(getServletConfig())方法
- 大小: 32.7 KB
分享到:
相关推荐
这使得它可以在Bean的生命周期中多个点进行干预,例如,在属性赋值之后修改属性值,这在Spring的自动注入和AOP实现中非常有用。 - BeanPostProcessor:这个接口允许在Bean初始化之前和之后进行扩展。它用于修改Bean...
Spring提供了一系列的Aware接口,如BeanNameAware、BeanFactoryAware和ApplicationContextAware,这些接口使得Bean可以在运行时获取自身的一些信息,例如Bean的名字、所处的Bean工厂或ApplicationContext,帮助实现...
Spring提供了多个Aware接口,如ResourceLoaderAware、BeanClassLoaderAware等,用于让Bean感知到Spring容器的各种资源。 1.7 Bean定义继承 Bean定义可以继承自父定义,使得子定义可以继承父定义的配置属性。 1.8 ...
本文介绍了Spring框架中不常见的标签和接口,包括对象的声明周期、各种Aware接口、初始化和销毁的回调方法等。通过理解和掌握这些内容,开发人员能够在特定场景下更灵活地使用Spring框架,提高代码的可扩展性和可...
- 其他Aware接口允许bean获取更多的上下文信息。 - **3.7 Spring Bean的继承** - 如何在一个bean上继承另一个bean的配置。 - **3.8 容器扩展点** - **3.8.1 使用BeanPostProcessor定制bean** - ...
- Spring还提供了一系列其他Aware接口,用于让Bean获取更多的上下文信息。 #### 六、Bean定义继承 - **Bean定义继承**:Bean可以继承另一个Bean的定义,从而重用属性和配置信息。这种机制可以减少重复配置,并使...
Spring还提供了一系列其他Aware接口,可以帮助Bean更好地融入Spring环境。 #### 六、Bean定义继承 通过继承Bean定义,可以复用现有的Bean配置,减少冗余代码。这种方式在配置复杂的应用时非常有用。 总结起来,...
- **1.6.3 其他Aware接口**: Spring还提供了其他的一些Aware接口,如`EnvironmentAware`等,使得Bean能够获取更多的上下文信息。 以上是对《spring-core.pdf》文档中关于Spring IoC容器的核心内容的总结。通过理解...
虽然Spring Boot的自动配置概念在3.1.0中尚未完全形成,但该版本已经开始孕育这一特性,为后续版本的自动配置打下了基础。 10. **JMX支持** 对Java Management Extensions(JMX)的改进,使得Spring应用可以更...
Spring提供了一系列的Aware接口,如BeanNameAware、ApplicationContextAware等,用于让Bean感知到Spring容器的一些信息。 #### 十六、BeanFactoryPostProcessor接口 BeanFactoryPostProcessor接口允许开发者在...
- 介绍了Spring提供的其他Aware接口。 **4.7 Bean定义的继承** - 介绍了如何使用继承来复用bean定义。 **4.8 容器扩展点** - **4.8.1 使用BeanPostProcessor来自定义bean** - 介绍了BeanPostProcessor接口的...
- **Aware 接口**:用于为 Bean 提供额外的信息感知能力。 - **配置文件中的方法**:在 Bean 的配置文件中声明 `init-method` 和 `destroy-method`。 - **注解方式**:利用 `@PostConstruct` 和 `@PreDestroy` ...
另外,还可以通过实现特定的aware接口,来让bean获取Spring容器的信息。 4.7 Bean定义的继承 Spring允许bean定义之间继承,这样子bean定义可以覆盖父定义的属性值。 4.8 容器扩展点 Spring IoC容器提供了许多扩展...
- **定义**:Aware接口是一组接口的总称,用于让bean能够意识到Spring容器的存在。 - **作用**:允许bean获取到自身的一些元数据(如ApplicationContext、BeanName等)。 - **示例**:实现`ApplicationContextAware`...
2. 声明式事务管理:通过在XML配置或注解中声明事务属性,由Spring自动管理事务。这种方式降低了代码的耦合度,更易于维护。 以上就是针对互联网大厂Java中级面试中涉及的一些关键知识点的详细解析,涵盖了Spring...
### Spring Framework 4 参考文档关键知识点概览 #### 一、Spring Framework 总览 ...以上内容概括了 Spring Framework 4 中的一些核心概念和关键技术点,为理解和使用 Spring Framework 提供了坚实的基础。
然后,Spring会检查Bean是否实现了特定的`Aware`接口,如`BeanNameAware`、`BeanFactoryAware`和`ApplicationContextAware`。这些接口提供了让Bean获取自身名称、Bean工厂或应用上下文的能力。`invokeAwareMethods()...
7. **其他接口和策略**:Spring提供了一系列的`Aware`接口,如`BeanFactoryAware`和`ApplicationContextAware`,使得Bean能够感知到它们所处的环境。`BeanPostProcessor`接口允许自定义Bean实例化和销毁的逻辑,而`...