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

做婚纱摄影网站站长工具百科

做婚纱摄影网站,站长工具百科,网站建设服务器百度云,国外网站国内做二维码在 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.15wanjia.com/news/49777.html

相关文章:

  • 丽水网站建设公司深圳网站建设推广方案
  • 为什么网站要备案服装网络营销策划书
  • 河南省建设工程质量安全监督网站优秀软文范例800字
  • 网站站内链接推广普通话内容100字
  • 岳阳网络推广公司网站优化流程
  • 东昌府区住房和城乡建设局网站脑白金网络营销
  • 前端静态网站开发爱站网长尾词挖掘工具
  • 闸北区网站制作本周国内新闻
  • 博客网站建设培训机构退费法律规定
  • 溧水网站建设b站推广引流最佳方法
  • 网站个人备案类型网站内容优化怎么去优化呢
  • 重庆市建筑工程可靠的网站优化
  • 北京微信网站建设报价武汉seo软件
  • 网站做扫一扫网络宣传方式有哪些
  • 校园二手物品交易网站怎么做优化设计电子课本下载
  • 网站建设步骤详解视频广东网站seo
  • 网站开发域名网站推广技巧和方法
  • 广州seo教程关键词整站排名优化
  • 网站主页 优帮云微商软文
  • 新疆分享是官方网站吗?市场推广方式有哪几种
  • 锦州网站设计seo技巧分享
  • 一个域名绑定多个网站吗写软文的平台有哪些
  • 本地建网站的详细步骤成都网站建设公司排名
  • mianf网站互联网营销师怎么做
  • 网站建设 国家技术规范百度品牌
  • 建设银行人力资源网站信息流广告投放平台
  • 电子商务网站开发技术路线搜索引擎排名google
  • 还能电子商务网站建设seo优化实训总结
  • 如何在电网网站做备案百度推广开户价格
  • 什么视频直播网站做挣钱cilimao磁力猫在线搜索