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

西安开发网站建设怎么学互联网怎么赚钱

西安开发网站建设,怎么学互联网怎么赚钱,营销技巧美剧,linux网站建设技术指南 pdf在 Spring 的 bean 装载条件中,虽然 Spring 给我们提供了非常好用便捷的 Condition 相关注解,但是很多时候 Condition 相关注解并不满足我们的需求,我需要更复杂的条件手动控制是否装置 bean。这个时候我们就可以实现 Spring 为我们提供的几个…

在 Spring 的 bean 装载条件中,虽然 Spring 给我们提供了非常好用便捷的 Condition 相关注解,但是很多时候 Condition 相关注解并不满足我们的需求,我需要更复杂的条件手动控制是否装置 bean。这个时候我们就可以实现 Spring 为我们提供的几个接口来实现手动 bean 的注入。

一、ApplicationContextAware 接口

在某些特殊的情况下,bean 需要实现某个功能,但该功能必须借助于 Spring 容器才能实现,此时就必须让该 bean 先获取 Spring 容器,然后借助于 Spring 容器实现该功能。为了让 bean 获取它所在的 Spring 容器,可以让该 bean 实现 ApplicationContextAware 接口。ApplicationContextAware 通过它 Spring 容器会自动把上下文环境对象调用ApplicationContextAware 接口中的 setApplicationContext 方法。在 ApplicationContextAware 的实现类中,就可以通过这个上下文环境对象得到 Spring 容器中的 bean。

@Component
public class MyContextAware implements ApplicationContextAware {@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {System.out.println("SpringWebSocketContextAware");// 将 applicationContext 转换为 ConfigurableApplicationContextConfigurableApplicationContext configurableApplicationContext = (ConfigurableApplicationContext) applicationContext;// 获取 BeanFactoryDefaultListableBeanFactory defaultListableBeanFactory = (DefaultListableBeanFactory) configurableApplicationContext.getAutowireCapableBeanFactory();// 创建 bean 信息BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(Test.class);// 动态注册 beandefaultListableBeanFactory.registerBeanDefinition("test", beanDefinitionBuilder.getBeanDefinition());}
}

 二、BeanDefinitionRegistryPostProcessor 接口

Spring 中并没有具体去实现 postProcessBeanFactory 方法,是提供给想要实现BeanPostProcessor 的三方框架使用的。谁要使用谁就去实现。作用是在 BeanFactory 准备工作完成后做一些定制化的处理,一般结合 BeanPostProcessor 接口的实现类一起使用,注入一些重要资源。

@Component
public class MyBeanDefinitionRegistryPostProcessor implements BeanDefinitionRegistryPostProcessor {@Overridepublic void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {BeanDefinition beanDefinition = BeanDefinitionBuilder.rootBeanDefinition(Test.class).getBeanDefinition();registry.registerBeanDefinition("test", beanDefinition);}@Overridepublic void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {BeanDefinitionRegistryPostProcessor.super.postProcessBeanFactory(beanFactory);}
}

三、ImportBeanDefinitionRegistrar 接口

在 spring 应用启动过程,一些被 @Import 注解的类(这些类都实现了 ImportBeanDefinitionRegistrar 接口)会执行 ImportBeanDefinitionRegistrar 的registerBeanDefinitions 方法,然后生成 BeanDefinition 对象,并最终注册到BeanDefinitionRegistry 中,为后续实例化 bean 做准备的。

@Component
public class MyImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {@Overridepublic void registerBeanDefinitions(@NotNull AnnotationMetadata importingClassMetadata,@NotNull BeanDefinitionRegistry registry,@NotNull BeanNameGenerator importBeanNameGenerator) {this.registerBeanDefinitions(importingClassMetadata, registry);}@Overridepublic void registerBeanDefinitions(@NotNull AnnotationMetadata importingClassMetadata,BeanDefinitionRegistry registry) {BeanDefinition beanDefinition = BeanDefinitionBuilder.rootBeanDefinition(Test.class).getBeanDefinition();registry.registerBeanDefinition("test", beanDefinition);ImportBeanDefinitionRegistrar.super.registerBeanDefinitions(importingClassMetadata, registry);}
}

接口执行顺序:ImportBeanDefinitionRegistrar -> BeanDefinitionRegistryPostProcessor -> ApplicationContextAware 

http://www.dnsts.com.cn/news/511.html

相关文章:

  • wordpress类别链接网站关键词优化代理
  • 强化 门户网站建设汕头seo排名收费
  • 网站建设与网站设计哪个好学seo推广的网站和平台有哪些
  • 负责公司网站的日常管理免费站推广网站2022
  • 建设厅公积金中心网站优化网站建设
  • 目前我国政府网站建设的现状宁波网站建设推广平台
  • 都匀网站制作公司建站公司网站建设
  • 高质量的高密网站建设百度学术官网
  • 网站制作属于什么行业最靠谱的十大教育机构
  • 自己做网站 什么百度推广代理商返点
  • 建站快车用户登录三只松鼠网络营销方案策划书
  • 做网站开发想转行做医药销售西安seo优化公司
  • 按f12复制代码可以做网站吗郑州网站推广
  • WordPress文章浏览太原seo外包平台
  • 响应式手机模板WordPress郑州seo推广外包
  • 怎么查网站有没有做底部导航seo的排名机制
  • 网站模板中文版怎样做推广是免费的
  • 国外室内设计网站大全怎么接推广
  • 企业网站建设 哪个公司做得好免费建网站知乎
  • 宜昌制作网站公司东莞网站seo优化
  • 怎么做查询网站黑锋网seo
  • 中国建设银行官方网站诚聘英才电子商务
  • 北京网站建设电话网址链接查询
  • 做网站跟客人怎么沟通网络营销是指
  • 网站建设推广襄樊媒体平台推广
  • 三乡网站建设有趣软文广告经典案例
  • 怎样制作网站开发的进度表seo诊断分析工具
  • 建模网seo免费软件
  • 网站建设首选-云端高科seo关键字优化价格
  • 温州手机网站制作多少钱电商运营培训课程有哪些