当前位置: 首页 > news >正文

傻瓜式网站建设男做直播网站好

傻瓜式网站建设,男做直播网站好,广西建设厅证书查询,企业所得税税率是多少2024年概述 在refresh方法中的prepareBeanFactory方法中,有一个拓展点:addBeanPostProcessor。即通过注入Aware对象从而将容器中的某些值设置到某个bean中。 beanFactory.addBeanPostProcessor(new ApplicationContextAwareProcessor(this));aware接口调用 …

概述

在refresh方法中的prepareBeanFactory方法中,有一个拓展点:addBeanPostProcessor。即通过注入Aware对象从而将容器中的某些值设置到某个bean中。

beanFactory.addBeanPostProcessor(new ApplicationContextAwareProcessor(this));

aware接口调用

invokeAwareMethods

该方法在doCreateBean的initializeBean方法中。
只是BeanNameAware BeanClassLoaderAware BeanFactoryAware时,是通过invokeAwareMethods方法调用的。

	private void invokeAwareMethods(String beanName, Object bean) {if (bean instanceof Aware) {if (bean instanceof BeanNameAware) {((BeanNameAware) bean).setBeanName(beanName);}if (bean instanceof BeanClassLoaderAware) {ClassLoader bcl = getBeanClassLoader();if (bcl != null) {((BeanClassLoaderAware) bean).setBeanClassLoader(bcl);}}if (bean instanceof BeanFactoryAware) {((BeanFactoryAware) bean).setBeanFactory(AbstractAutowireCapableBeanFactory.this);}}}

若是其他aware接口则是通过实现BeanPostProcessor调用的,如ApplicationContextAwareProcessor

ApplicationContextAwareProcessor

class ApplicationContextAwareProcessor implements BeanPostProcessor 

重写了postProcessBeforeInitialization方法,在这里是具体的处理逻辑,调用逻辑是在invokeAwareMethods的applyBeanPostProcessorsBeforeInitialization方法中

	@Override@Nullablepublic Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {if (!(bean instanceof EnvironmentAware || bean instanceof EmbeddedValueResolverAware ||bean instanceof ResourceLoaderAware || bean instanceof ApplicationEventPublisherAware ||bean instanceof MessageSourceAware || bean instanceof ApplicationContextAware)){return bean;}AccessControlContext acc = null;if (System.getSecurityManager() != null) {acc = this.applicationContext.getBeanFactory().getAccessControlContext();}if (acc != null) {AccessController.doPrivileged((PrivilegedAction<Object>) () -> {invokeAwareInterfaces(bean);return null;}, acc);}else {invokeAwareInterfaces(bean);}return bean;}

调用aware接口

private void invokeAwareInterfaces(Object bean) {if (bean instanceof EnvironmentAware) {((EnvironmentAware) bean).setEnvironment(this.applicationContext.getEnvironment());}if (bean instanceof EmbeddedValueResolverAware) {((EmbeddedValueResolverAware) bean).setEmbeddedValueResolver(this.embeddedValueResolver);}if (bean instanceof ResourceLoaderAware) {((ResourceLoaderAware) bean).setResourceLoader(this.applicationContext);}if (bean instanceof ApplicationEventPublisherAware) {((ApplicationEventPublisherAware) bean).setApplicationEventPublisher(this.applicationContext);}if (bean instanceof MessageSourceAware) {((MessageSourceAware) bean).setMessageSource(this.applicationContext);}if (bean instanceof ApplicationContextAware) {((ApplicationContextAware) bean).setApplicationContext(this.applicationContext);}}

applyBeanPostProcessorsBeforeInitialization

该方法也在initializeBean中

protected Object initializeBean(String beanName, Object bean, @Nullable RootBeanDefinition mbd) {if (System.getSecurityManager() != null) {AccessController.doPrivileged((PrivilegedAction<Object>) () -> {invokeAwareMethods(beanName, bean);return null;}, getAccessControlContext());}else {// 对实现了aware接口的bean执行aware实现方法invokeAwareMethods(beanName, bean);}Object wrappedBean = bean;if (mbd == null || !mbd.isSynthetic()) {// 调用BeanPostProcessor的postProcessBeforeInitialization方法的实现wrappedBean = applyBeanPostProcessorsBeforeInitialization(wrappedBean, beanName);}....

getBeanPostProcessors方法获取所有的BeanPostProcessors,然后遍历调用postProcessBeforeInitialization方法

	@Overridepublic Object applyBeanPostProcessorsBeforeInitialization(Object existingBean, String beanName)throws BeansException {Object result = existingBean;for (BeanPostProcessor processor : getBeanPostProcessors()) {Object current = processor.postProcessBeforeInitialization(result, beanName);if (current == null) {return result;}result = current;}return result;}

我们可以在该方法的实现中找到自定义的BeanPostProcessor从而实现拓展
在这里插入图片描述

其他

拓展点: parseCustomElement

http://www.yayakq.cn/news/587111/

相关文章:

  • 聊城网站建设哪家专业无锡效果图制作
  • 做影视后期应该关注哪些网站小城市门户网站建设方案
  • 立方米网站建设网站流量分布
  • 在征婚网站上认识做期货品牌推广的意义
  • 简约大气网站设计欣赏东莞知名网站推广
  • 人是用什么做的视频网站吗织梦5.7转wordpress
  • 李志自己做网站wap医院网站建设
  • 域名备案与网站不一致物流加盟信息网站
  • 建设银行关方网站家居企业网站建设讯息
  • 温州手机网站建设wmwl手机网站模板 导航
  • 东莞注塑切水口东莞网站建设市场营销策划方案
  • 网站编辑移动网站开发语言
  • 长沙网站建设 个人泸州小程序定制开发
  • 医院网站建设需求分析调研表做美食网站的意义
  • 网上花店网站建设怎样重新安装wordpress
  • 怎么做可以直播的网站吗服装网站建设风格
  • 深圳企业建站招聘wordpress 订阅号推送
  • 硅胶鞋垫移动网站建设产品设计培训机构排名
  • 网站设计网页版营口市城乡住房建设局网站
  • 紫色网站岳麓区营销型网站建设定制
  • 做产品封面的网站扫码进入网站如何做
  • 宁波网站seo公司铜陵网站制作公司
  • 系部网站建设中期检查表网页制作工具软件下载
  • 广州市网站建设 骏域动力西安个人做网站
  • 迪拜哪个网站是做网站的杭州做网站排名软件
  • 网站建设算入会计分录系统ui设计界面
  • 展示型企业网站营销目标主要有网站运维推广怎么做
  • 网站 短链接怎么做织梦dedecms网站内容页
  • 中小学生在线做试卷的网站眯眯扑克app哪个公司开发
  • 一流学科建设专题网站泉州网红餐厅