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

珠宝首饰网站建设策划书qq推广工具

珠宝首饰网站建设策划书,qq推广工具,兰州城关区建设局网站,微网站公司Aware 在Spring当中有一些内置的对象是未开放给我们使用的,例如Spring的上下文ApplicationContext、环境属性Environment,BeanFactory等等其他的一些内置对象,而在我们可以通过实现对应的Aware接口去拿到我们想要的一些属性,一般…

Aware

在Spring当中有一些内置的对象是未开放给我们使用的,例如Spring的上下文ApplicationContext、环境属性Environment,BeanFactory等等其他的一些内置对象,而在我们可以通过实现对应的Aware接口去拿到我们想要的一些属性,一般命名都是xxxAware,在创建对象的时候, 会调用接口规定的方法注入到相关组件:Aware

常用的Aware:

用法示例:

源码解析

我们先了解什么是BeanPostProcessor,是在创建Bean之前以及创建Bean之后的一种后置处理器,这里就简单的讲一下这个,就是在我们使用的这些注解,例如:@Async (异步执行),@Bean,@Component、@Autowired、@PropertySource等等都需要经过BeanPostProcessor去处理才能加载到容器当中,

先看一个示例:

不仅仅有BeanPostProcessor还有BeanDefinitionRegistryPostProcessor(Bean注册器后置处理器)、BeanFactoryPostProcessor(BeanFactory后置处理器),

在处理Aware实现类的时候就会有对应的一个AwareProcessor去处理,我们拿ApplicationContextAware做示例**:**

我们找到对应的后置处理器ApplicationContextAwareProcessor

因为BeanPostProcessor有两个接口实现,但是只对处理前做内置对象赋值,将对应的对象暴露给我们

class ApplicationContextAwareProcessor implements BeanPostProcessor {private final ConfigurableApplicationContext applicationContext;private final StringValueResolver embeddedValueResolver;/*** Create a new ApplicationContextAwareProcessor for the given context.*/public ApplicationContextAwareProcessor(ConfigurableApplicationContext applicationContext) {this.applicationContext = applicationContext;this.embeddedValueResolver = new EmbeddedValueResolver(applicationContext.getBeanFactory());}@Override@Nullablepublic Object postProcessBeforeInitialization(final Object bean, String beanName) throws BeansException {AccessControlContext acc = null;if (System.getSecurityManager() != null &&(bean instanceof EnvironmentAware || bean instanceof EmbeddedValueResolverAware ||bean instanceof ResourceLoaderAware || bean instanceof ApplicationEventPublisherAware ||bean instanceof MessageSourceAware || bean instanceof ApplicationContextAware)) {acc = this.applicationContext.getBeanFactory().getAccessControlContext();}if (acc != null) {AccessController.doPrivileged((PrivilegedAction<Object>) () -> {invokeAwareInterfaces(bean);return null;}, acc);}else {invokeAwareInterfaces(bean);}return bean;}private void invokeAwareInterfaces(Object bean) {if (bean instanceof Aware) {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);}}}@Overridepublic Object postProcessAfterInitialization(Object bean, String beanName) {return bean;}}

不得不说Spring的这种设计还是很厉害的,建议可以买本Spring IOC源码分析的书看看比较好,了解的更加细致

http://www.dtcms.com/wzjs/126464.html

相关文章:

  • 有个虚拟服务器建设网站fifa最新世界排名
  • 做交易网站什么开发语言网站查询域名
  • 做推文加入视频的网站旺道seo优化软件
  • 17种新型商业模式企业关键词排名优化网址
  • 淄博高端网站设计如何添加百度指数
  • 个人品牌网站建设抖音优化公司
  • mcmore商城网站开发优化大师win7官方免费下载
  • 梵克雅宝官网中国官方网站项链网络seo营销推广
  • 网站名称怎么收录关键词排名方法
  • 淘宝网由于该网站的robots.txt文件存在限制指令白云区新闻
  • wordpress仿微信公众号模板优化公司流程制度
  • wordpress建设资源站点插件江阴网站制作公司
  • 诸城市网站建设网络营销推广的5种方法
  • 广州网站建设性价比怎样建立网站免费的
  • 360网站托管免费网页制作网站
  • 网站建设技术服务协议优化网站建设
  • 科技 公司 响应式 网站seo如何提升排名收录
  • 外贸网站怎么做外链网络营销渠道有哪些
  • 政府网站 建设汇报百度广告搜索引擎
  • xwiki做的网站百度手机提高关键词排名
  • pc端购物网站建站网络优化的流程
  • 网站开发前后端分离是主流吗百度竞价推广是什么工作
  • 网站 建设的必要性淄博百度推广
  • 为什么打不开中国建设银行网站软文推广的优点
  • 有没有做黑市网站搜索引擎优化的英文缩写是什么
  • 英文购物网站建设推广网络营销外包公司
  • 做商城网站可以个人备案百度在全国有哪些代理商
  • seo教程培训班seo网上课程
  • xml是用来做网站的嘛无锡百姓网推广
  • 旧房装修找哪家seo软件资源