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

海洋做网站国外订房网站怎么和做

海洋做网站,国外订房网站怎么和做,家具网站建设目的及功能定位,石家庄市城乡建设局网站这篇文章我想和你聊一聊 spring的Enable模块驱动的实现原理。 在我们平时使用spring的过程中#xff0c;如果想要加个定时任务的功能#xff0c;那么就需要加注解EnableScheduling#xff0c;如果想使用异步的功能#xff0c;那就要加EnableScheduling注解#xff0c;其实…这篇文章我想和你聊一聊 spring的Enable模块驱动的实现原理。 在我们平时使用spring的过程中如果想要加个定时任务的功能那么就需要加注解EnableScheduling如果想使用异步的功能那就要加EnableScheduling注解其实这类注解就是属于Enable模块。 那么Enable模块到底有什么功能 模块是指具备相同领域的功能组件集合组合所形成一个独立的单元。比如Web MVC模块、AspectJ代理模块Caching缓存模块JMX(Java管理扩展)、Async异步处理模块等。所谓模块装配简而言之就是通过EnableXXX注解实现一个开关这个开关决定是否开启某个功能模块的所有组件的自动化配置。 那么EnableXXX注解是如何生效的 其实EnableXXX只是一个名字通过这个名字让人知道实现了什么功能其实这个注解叫什么名字其实是无所谓的就算不叫EnableXXX都行只不过spring内部都叫EnableXXX我们就习惯叫Enable模块所以核心不是这个注解而是注解实现的套路。 接下来我们来说说这个注解功能实现的套路 一般EnableXXX注解是通过Import实现具体的功能EnableXXX注解上加个Import注解Import才是EnableXXX起效果的核心功能。Import大家都知道就是往容器里面注入一个配置类但是这个配置类可是有讲究的。 这里我直接上源码带你看看Import注解功能是如何实现的。 Import注解的功能是在org.springframework.context.annotation.ConfigurationClassParser类processImports方法处理的。接下来我们就来解读一下实现的核心部分。 首先判断Import注解导入的是配置类有没有实现ImportSelector接口实现的话就就调用ImportSelector的selectImports方法这个方法返回的是一批配置类的全限定名然后继续解析这些配置类。 ImportSelector接口的作用其实就是往spring容器中再次注入一批配置类。 如果没有实现ImportSelector接口那么再判断有没有实现ImportBeanDefinitionRegistrar有的话就会调用ImportBeanDefinitionRegistrar的registerBeanDefinitions方法通过名字也可以判断出其实就是往spring容器注入一些BeanDefinition。 ImportBeanDefinitionRegistrar的作用其实很简单就是往spring容器注入一些BeanDefinition。如果不是很清楚BeanDefinition是什么欢迎查看Spring bean到底是如何创建的上这篇文章有讲解。 如果这两个接口都没有实现那么就当时一个普通的配置类进行解析。 读完Import实现的源码我们再来总结回顾Import的作用。 Import注解就是导入一个配置类但是这个配置类分为不同的情况。如果这个配置类实现了ImportSelector接口那么就会调用selectImports方法的实现获取一批配置类的全限定名然后再解析配置类如果实现了Import注解导入的配置类实现类ImportBeanDefinitionRegistrar那么就会调用registerBeanDefinitions方法的实现这个方法可以往容器中注入BeanDefinition最后如果都没实现那么就按照一个普通的配置类来解析。 所以基于这么一套配置类解析的规则就可以实现往容器中注入一些bean通过这些bean来完成某块功能的实现。 懂了Enbale模块驱动的基本原理接下来我们举个例子来看看EnbaleAsync注解是如何实现的。 EnbaleAsync注解上通过Import注解导入了AsyncConfigurationSelector类 接下来我们进入这个类 一看源码就发现继承了AdviceModeImportSelector其实这个类实现了ImportSelector接口附上源码 其实这个对于ImportSelector接口的实现就是解析注解的属性然后拿到一个AdviceMode再调用一个模板方法selectImports这个方法主要子类来实现所以我们来看看AsyncConfigurationSelector的实现。 这个adviceMode是注解EnableAaync注解中的属性mode()你可以自己翻一下默认是PROXY所以这个方法其实就是返回ProxyAsyncConfiguration类的全限定名其实就是往容器中添加了ProxyAsyncConfiguration配置类。 我们进入这个配置类看一下 其实就是往容器中注入一个AsyncAnnotationBeanPostProcessor通过名字可以看出这是一个BeanPostProcessor也就是在bean的生命周期的某个节点来处理Aysnc注解如果有不懂BeanPostProcessor的同学可以看看Spring bean到底是如何创建的上和 Spring bean到底是如何创建的下这两篇文章里面有详细的说明。至于AsyncAnnotationBeanPostProcessor的实现我们就不再继续深究了有兴趣的同学可以自行点进去看看。 所以说白了EnbaleAsync注解的主要作用就是往容器中添加一个可以住了Async注解的AsyncAnnotationBeanPostProcessor在bean创建的某个阶段起到作用。 看完EnableAsync注解的实现你也可以仿照这个注解的实现来自己实现一个Enable来实现某个特定的功能。 本文到这里也就结束了。
http://www.huolong8.cn/news/226810/

相关文章:

  • 网站建设需要的资料小程序做网站
  • 肇庆市住房和城乡建设部网站公司内部网站建设方案
  • 学建站wordpress广东佛山
  • 西安推广网站中国网财经
  • 外国人在中国做美食视频网站进空间的网站
  • 广州哪里有做网站推广wordpress架设服务器
  • 广州白云区建站外贸公司珠海建网站的联系方式
  • 巫山做网站那家好即刻搜索引擎入口
  • php网站开发说明做网站不推广管用吗
  • 建筑工程发布网站单机版网页制作软件
  • 怎样在建立公司网站ps做网站效果图
  • 怎么做可以访问网站成都网站的建设
  • 网站建设公司的市场开发方案个人做网站时不要做什么样的网站
  • 百度一下你就知道官方网站纯html网页模板
  • 男女一起做暖暖网站如何设计网页作业
  • 网站制作算是什么专业苏州网络营销推广软件运营
  • 五分钟自己创建网站的方法商标注册45大类明细
  • 个人网站制作dwnas怎么做网站服务器
  • 网站建设有名的公司广告策划与营销
  • wordpress国外网站网站导航内链建设
  • 乌市正规网站建设wordpress查看图片插件
  • 站内优化主要从哪些方面进行学生个人网页制作html动态
  • 通过apache建设网站kol合作推广
  • 东莞技术好的网站建设赣州百姓网免费发布信息网
  • 本地网站建设方案信息大全百度网盟推广步骤
  • 1+x数字营销网站建一个网上商城需要多少钱
  • 哔哩哔哩网站怎么做视频软件wordpress增加标签页
  • 做网站维护工商经营范围是什么wordpress全屏博客
  • 做影集的网站或软件下载哪个网站论文多
  • 做公司网站的价格河西做网站的公司