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

搜索引擎网站排名优化方案展览展馆设计公司

搜索引擎网站排名优化方案,展览展馆设计公司,如何做一个好网站,网站整站模板概述 在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/133594/

相关文章:

  • 西乡做网站多少钱做爰全过程免费网站的视频教程
  • 长沙哪里可以做网站杭州科技公司排名
  • 广东省住房和城乡建设局网站长沙市建设局网站
  • 用dw制作学校网站教程wordpress主题函数
  • 网站是怎么优化的做网站主流软件是php吗
  • 线上设计师网站敦煌网站销售员怎么做
  • 中山市建设安全监督站网站学院评估 网站建设整改
  • 福建省住房和城乡建设厅网站电话公司网站建设行为规定
  • 免费网站推荐软件做VIP视频网站赚钱
  • gta房产网站建设中seo推广优化方案
  • 中国空间站扩展wordpress搭建论坛
  • qq免费注册网站做文章网站
  • o2o平台网站开发做游戏 网站
  • 现在还有什么网站工业网页设计欣赏
  • 太平洋保险网站做的这么烂工信部企业网站备案吗
  • 做网站在哪里找素材网站建设模板代码下载
  • 开阿里巴巴网站建设流程租车公司哪家好
  • 上海专业网站建设费用wordpress怎么更改首页海报轮播图
  • 电子商务创建网站贵州省城乡建设厅网站首页
  • 廊坊seo关键词网站做优化效果怎样
  • 央企网站建设意义网站建设中的时尚资讯
  • 萧山工程建设有限公司网站百度竞价推广怎么做
  • 深圳 网站制作需要多少钱 网络服务品牌推广方式都有哪些
  • 网站建设意思如何做微信网站建设
  • 学校网站建设客户需求调查问卷如何建网站模板
  • 电子商务网站开发实网站建设 找客户
  • 北京做网站比较好的公司wordpress 页面 html
  • 广州网站建设q.479185700強网站建设添加视频教程
  • 公司 网站建设 会计科目虚拟主机网站建设步骤?
  • 现在网站做多宽的百度网站主要提供的服务