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

专门做中式的设计网站大连图文设计有限公司

专门做中式的设计网站,大连图文设计有限公司,WordPress如何快速排名,建筑施工单位有哪些公司如果你脱口而出说添加 Order 注解或者是实现 Ordered 接口#xff0c;那么恭喜#xff0c;你掉坑了。 一 Order 注解和 Ordered 接口 在 Spring 框架中#xff0c;Order 是一个非常实用的元注解#xff0c;它位于 spring-core 包下#xff0c;主要用于控制某些特定上下文…如果你脱口而出说添加 Order 注解或者是实现 Ordered 接口那么恭喜你掉坑了。 一 Order 注解和 Ordered 接口 在 Spring 框架中Order 是一个非常实用的元注解它位于 spring-core 包下主要用于控制某些特定上下文中组件的执行顺序或排序但它并不直接控制 Bean 的初始化顺序。 1.1 用途 Order 注解或者是 Ordered 接口常见的用途主要是两种 定义执行顺序当多个组件如拦截器、过滤器、监听器等需要按照特定的顺序执行时Order 注解可以用来指定这些组件的执行优先级。数值越小优先级越高相应的组件会更早被执行或被放置在集合的前面Order 注解接受一个整数值这个值可以是负数、零或正数。Spring 框架提供了 Ordered.HIGHEST_PRECEDENCE默认最低优先级和 Ordered.LOWEST_PRECEDENCE默认最高优先级常量分别对应于 Integer.MIN_VALUE和 Integer.MAX_VALUE可以方便地设定优先级。。 集合排序当相同类型的组件被自动装配到一个集合中时Order 注解会影响它们在这个集合中的排列顺序。 1.2 使用场景 经典使用场景。 拦截器排序 在 Spring MVC 中可以使用 Order 来控制拦截器的执行顺序。 Spring Security Filters过滤器 在 Spring Security 中过滤器链的顺序通过 Order 来定义确保正确的安全处理流程。这个在松哥最近的教程中和大家详细介绍过了。 Event Listeners事件监听器 当有多个监听同一事件的监听器时可以通过 Order 来控制它们的触发顺序。 Bean 的集合注入 当一个 Bean 依赖于一个特定类型的 Bean 集合时带有 Order 注解的 Bean 将按照指定顺序被注入。 可以看到Order 注解的使用场景中主要是相同类型的 Bean 存在多个时这多个 Bean 的执行顺序可以通过 Order 注解或者实现 Ordered 接口来确定。 但是 Order 注解不控制初始化和加载Order 注解不直接影响 Bean 的创建和初始化过程这些由 Spring IoC 容器基于依赖关系和配置来决定。Spring IoC 容器根据依赖关系图来决定 Bean 的初始化顺序而不是依据 Order 注解。依赖关系决定了哪些 Bean 需要在其他 Bean 初始化之前被创建。 二 如何设置 Bean 的加载顺序 有两种方式来设置 Bean 的加载顺序。 2.1 DependsOn DependsOn 是 Spring 框架提供的一个注解用于指示 Spring 容器在初始化一个 Bean 之前必须先初始化其依赖的其他 Bean。这个注解可以帮助解决 Bean 间的依赖关系确保依赖的 Bean 已经准备就绪。 DependsOn 可以放在任何一个 Spring 管理的 Bean 定义上包括但不限于配置类、服务类、数据访问对象等。其语法如下 DependsOn({beanName1, beanName2, ...}) public class MyBean {// ... }在这个例子中MyBean 类声明了它依赖于名为 beanName1 和 beanName2 的 Bean。这意味着当 Spring 容器创建 MyBean 的实例时它会首先确保 beanName1 和 beanName2 已经被正确初始化。 相关的源码在 AbstractBeanFactory#doGetBean 方法中 在创建的 Bean 的时候先检查该 Bean 是否依赖了其他 Bean如果依赖了则先把其他 Bean 创建出来然后再继续创建当前 Bean这样就确保了 Bean 的加载顺序。 如果小伙伴们对这块的完整流程感兴趣可以看松哥录制的 Spring源码分析。 2.2 BeanFactoryPostProcessor 第二种方式就是利用 BeanFactoryPostProcessorBeanFactoryPostProcessor 的执行时机比较早从下面这张流程图中可以看到BeanFactoryPostProcessor 在正常的 Bean 初始化之前就执行了。 那么对于想要提前初始化的 Bean我们可以在 BeanFactoryPostProcessor 中手动调用类似下面这样 Component public class MyBeanFactoryPostProcessor implements BeanFactoryPostProcessor {Overridepublic void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {//想要提前初始化的 Bean 在这里执行beanFactory.getBean(serviceB);} }三 小结 多个相同类型的 Bean 该如何确保其执行顺序这个靠 Order 注解或者 Ordered 接口来解决。但是这两者并不能解决 Bean 的加载顺序。Bean 的加载顺序有两种方式可以调整 通过 DependsOn 注解加载。手动在 BeanFactoryPostProcessor#postProcessBeanFactory 方法中提前调用 getBean 方法去初始化 Bean。 如果小伙伴们想要彻底掌握 Spring 源码那么不妨看看松哥录制的 Spring 源码视频教程。
http://www.dnsts.com.cn/news/18588.html

相关文章:

  • 云建站互动营销经典案例
  • 个人网站布局下载网站建设公司优惠中
  • 什么软件能自己做网站战事新闻最新
  • 昔阳做网站公司上海哪个网站好用
  • 北京网站建设设计公司广安住房和城乡建设厅网站
  • 企业展示网站 价钱昆明小程序定制
  • 骏域网站建设专家电话php网站建设开发
  • 鄂州网站推广个人网站意义
  • 网站中主色调腾讯云wordpress帐号
  • 个人网站网址org域名为什么禁止备案
  • 网站建设上海诏业图片网站虚拟主机
  • 设置网站湘潭网站建设问下磐石网络
  • 深圳英文网站建设江苏固茗建设有限公司网站
  • 网站方案书什么东西品牌vi设计多少钱
  • 东莞疾控最新提醒网站站内优化
  • 建一个在线商城网站辽宁手机版建站系统开发
  • 网络营销平台搭建方案网站网站建设虚拟服务器
  • 苏州制作企业网站的网站空间怎么选择
  • 网站关键词优化排名技巧哪个网上购物网站好
  • 苏州企业网站建设方案wordpress托管服务
  • 企业网站一般要素seo关键词排名
  • 网站服务类型有哪些wordpress 本机模拟
  • 做网站就app开发合同模板最新版
  • 深圳手机端网站建设专业wordpress 迁移 步骤
  • mysql开发网站开发国内重大新闻2022
  • 汕头网站建设推广平台西安网站设计试听
  • 一等一网站建设网页游戏平台系统
  • 网站建设工作进度计划表做网站维护费是怎么算的
  • 网站建设皿金手指排名企查查企业信息查询系统官网
  • 网站通信管理部门备案wordpress导航主题下载