`
ray1205
  • 浏览: 851 次
社区版块
存档分类
最新评论

spring为实现Aware接口的自动设置相关属性的操作

阅读更多
引用
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
分享到:
评论

相关推荐

    Spring Bean生命周期.pdf

    这使得它可以在Bean的生命周期中多个点进行干预,例如,在属性赋值之后修改属性值,这在Spring的自动注入和AOP实现中非常有用。 - BeanPostProcessor:这个接口允许在Bean初始化之前和之后进行扩展。它用于修改Bean...

    Spring中关于Bean的管理的课件

    Spring提供了一系列的Aware接口,如BeanNameAware、BeanFactoryAware和ApplicationContextAware,这些接口使得Bean可以在运行时获取自身的一些信息,例如Bean的名字、所处的Bean工厂或ApplicationContext,帮助实现...

    Spring Reference - Core Technologies.pdf

    Spring提供了多个Aware接口,如ResourceLoaderAware、BeanClassLoaderAware等,用于让Bean感知到Spring容器的各种资源。 1.7 Bean定义继承 Bean定义可以继承自父定义,使得子定义可以继承父定义的配置属性。 1.8 ...

    spring其他标签

    本文介绍了Spring框架中不常见的标签和接口,包括对象的声明周期、各种Aware接口、初始化和销毁的回调方法等。通过理解和掌握这些内容,开发人员能够在特定场景下更灵活地使用Spring框架,提高代码的可扩展性和可...

    Spring5.0中文开发手册

    - 其他Aware接口允许bean获取更多的上下文信息。 - **3.7 Spring Bean的继承** - 如何在一个bean上继承另一个bean的配置。 - **3.8 容器扩展点** - **3.8.1 使用BeanPostProcessor定制bean** - ...

    spring core官方文档.pdf

    - Spring还提供了一系列其他Aware接口,用于让Bean获取更多的上下文信息。 #### 六、Bean定义继承 - **Bean定义继承**:Bean可以继承另一个Bean的定义,从而重用属性和配置信息。这种机制可以减少重复配置,并使...

    Spring Reference Core Technologies

    Spring还提供了一系列其他Aware接口,可以帮助Bean更好地融入Spring环境。 #### 六、Bean定义继承 通过继承Bean定义,可以复用现有的Bean配置,减少冗余代码。这种方式在配置复杂的应用时非常有用。 总结起来,...

    spring-core.pdf

    - **1.6.3 其他Aware接口**: Spring还提供了其他的一些Aware接口,如`EnvironmentAware`等,使得Bean能够获取更多的上下文信息。 以上是对《spring-core.pdf》文档中关于Spring IoC容器的核心内容的总结。通过理解...

    spring-framework-3.1.0源码

    虽然Spring Boot的自动配置概念在3.1.0中尚未完全形成,但该版本已经开始孕育这一特性,为后续版本的自动配置打下了基础。 10. **JMX支持** 对Java Management Extensions(JMX)的改进,使得Spring应用可以更...

    spring 技术手册

    Spring提供了一系列的Aware接口,如BeanNameAware、ApplicationContextAware等,用于让Bean感知到Spring容器的一些信息。 #### 十六、BeanFactoryPostProcessor接口 BeanFactoryPostProcessor接口允许开发者在...

    spring3.1中文参考文档

    - 介绍了Spring提供的其他Aware接口。 **4.7 Bean定义的继承** - 介绍了如何使用继承来复用bean定义。 **4.8 容器扩展点** - **4.8.1 使用BeanPostProcessor来自定义bean** - 介绍了BeanPostProcessor接口的...

    Java中级面试题 Spring和Netty相关问题

    - **Aware 接口**:用于为 Bean 提供额外的信息感知能力。 - **配置文件中的方法**:在 Bean 的配置文件中声明 `init-method` 和 `destroy-method`。 - **注解方式**:利用 `@PostConstruct` 和 `@PreDestroy` ...

    Spring 3 Reference中文

    另外,还可以通过实现特定的aware接口,来让bean获取Spring容器的信息。 4.7 Bean定义的继承 Spring允许bean定义之间继承,这样子bean定义可以覆盖父定义的属性值。 4.8 容器扩展点 Spring IoC容器提供了许多扩展...

    Spring入门

    - **定义**:Aware接口是一组接口的总称,用于让bean能够意识到Spring容器的存在。 - **作用**:允许bean获取到自身的一些元数据(如ApplicationContext、BeanName等)。 - **示例**:实现`ApplicationContextAware`...

    互联网大厂Java中级面试真题

    2. 声明式事务管理:通过在XML配置或注解中声明事务属性,由Spring自动管理事务。这种方式降低了代码的耦合度,更易于维护。 以上就是针对互联网大厂Java中级面试中涉及的一些关键知识点的详细解析,涵盖了Spring...

    spring-framework-4-reference 中文文档

    ### Spring Framework 4 参考文档关键知识点概览 #### 一、Spring Framework 总览 ...以上内容概括了 Spring Framework 4 中的一些核心概念和关键技术点,为理解和使用 Spring Framework 提供了坚实的基础。

    Spring bean生命周期配置过程解析

    然后,Spring会检查Bean是否实现了特定的`Aware`接口,如`BeanNameAware`、`BeanFactoryAware`和`ApplicationContextAware`。这些接口提供了让Bean获取自身名称、Bean工厂或应用上下文的能力。`invokeAwareMethods()...

    知识点整理1

    7. **其他接口和策略**:Spring提供了一系列的`Aware`接口,如`BeanFactoryAware`和`ApplicationContextAware`,使得Bean能够感知到它们所处的环境。`BeanPostProcessor`接口允许自定义Bean实例化和销毁的逻辑,而`...

Global site tag (gtag.js) - Google Analytics