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

深圳建设工程信息网站推广策划

深圳建设工程信息网站,推广策划,广东黄页企业名录,专业做互联网招聘的网站有哪些内容SpringBoot自动装配定义先后顺序失效原因极其解析 1、场景分析1.1、问题总结 2、使用AutoConfigureBefore、AutoConfigureAfter和AutoConfigureOrder注解指定加载顺序2.2、AutoConfigureXX注解失效原因总结 3、使用静态内部装配类提升加载顺序4、bean加载顺序规则 1、场景分析 … SpringBoot自动装配定义先后顺序失效原因极其解析 1、场景分析1.1、问题总结 2、使用AutoConfigureBefore、AutoConfigureAfter和AutoConfigureOrder注解指定加载顺序2.2、AutoConfigureXX注解失效原因总结 3、使用静态内部装配类提升加载顺序4、bean加载顺序规则 1、场景分析 遇到的场景 最近写定义依赖时需要结合SpringMvc的WebMvcConfigurationSupport扩展异常解析器方法extendHandlerExceptionResolvers Beanpublic HandlerExceptionResolver handlerExceptionResolver(Qualifier(mvcContentNegotiationManager) ContentNegotiationManager contentNegotiationManager) {ListHandlerExceptionResolver exceptionResolvers new ArrayList();configureHandlerExceptionResolvers(exceptionResolvers);if (exceptionResolvers.isEmpty()) {addDefaultHandlerExceptionResolvers(exceptionResolvers, contentNegotiationManager);}extendHandlerExceptionResolvers(exceptionResolvers);HandlerExceptionResolverComposite composite new HandlerExceptionResolverComposite();composite.setOrder(0);composite.setExceptionResolvers(exceptionResolvers);return composite;}其中extendHandlerExceptionResolvers方法提供了可继承的接口让开发者能够添加自定义的异常解析器放到HandlerExceptionResolverComposite中供dispatchServlet解析异常 1.1、问题总结 自定义的异常解析器配置类继承WebMvcConfigurationSupport类重写extendHandlerExceptionResolvers方法后按照开放接口的原理我们的异常解析器会添加到HandlerExceptionResolverComposite列表中但是实际上并非如此。 开发者自定义的装配类和WebMvcConfigurationSupport引用的jar包中装配类顺序解决方案一使用AutoConfigureBefore、AutoConfigureAfter和AutoConfigureOrder注解指定加载顺序解决方案二使用静态内部装配类提前加载 2、使用AutoConfigureBefore、AutoConfigureAfter和AutoConfigureOrder注解指定加载顺序 SpringBoot下可以通过Configuration自动扫描配置类和spring.factories来加载配置类但这两种方式都无法控制加载顺序。 此时可通过在配置类上增加AutoConfigureAfter 、 AutoConfigureBefore和AutoConfigureOrder来控制配置文件加载的相对顺序。 SpringBoot的自动配置是通过spring.factories来指定的它的优先级最低加载时间最晚spring.factories中的配置类顺序不代表实际加载顺序。可结合 AutoConfigureAfter 和 AutoConfigureBefore注解控制配置类的相对加载顺序。 通过Configuration和ComponentScan扫描加载的配置类一般是我们自定义的配置类这部分配置类优先级最高加载时间最早在加载spring.factories配置类前加载但加载顺序不定。 这里就存在另一个易错点。简单的理解当配置类在Spring扫描路径里面scanBasePackages会优先解析后面在通过ImportSelectorspring.factories加载就是通过实现这个接口加载的配置类加载进来的配置类就不会处理了相当于一个类有两种加载方式谁先加载谁就厉害。。。这里加载都会调用到processConfigurationClass()方法这个下面会说 空口无凭上菜ConfigurationClassParser–doProcessConfigurationClass()方法加载顺序是ComponentScan(扫描文件路径路径里面元注解为ComponentCofiguration元注解也是Component都会被扫描到)—加载Import注解配合ImportSelector接口—加载 ImportResource—加载Bean—… 大致顺序理清楚了。 也就是通过spring.factories加载的配置类优先级更低我们自定义的装配类最后才会加载 2.2、AutoConfigureXX注解失效原因总结 extendHandlerExceptionResolvers方法在WebMvcConfigurationSupport加载的时候已经执行过了由于加载顺序问题那么我们自己的装配类中重写方法将无法被调用所以这就是AutoConfigureBefore、AutoConfigureAfter和AutoConfigureOrder注解无法生效的原因不适用很多场景 3、使用静态内部装配类提升加载顺序 这也是小编使用的方法这种场景在纯Spring环境下我们几乎遇不见缘由是在Spring下所有的配置文件都是我们手动确定和编写所以“哪些能写、哪些不能写哪些在前哪些在后”均是确定的由我们程序员自行控制。该场景在Spring Boot场景下被大量用到 总结如下 static加在bean注册方法上 1、 Configuration配置类最优先被初始化才会继续初始化其里面的Bean若有多个 Configuration配置类顺序由你构造AnnotationConfigApplicationContext时传入的顺序为准若是被scan扫描进去的则无序 2、 Bean方法上加static成为静态方法并不能提升此Bean的优先级 主要是因为Bean的解析必须是发生在Configuration配置类被实例化后因此它并不能提升优先级 static加在静态内部类上 1、 Configuration外层配置类的初始化顺序依旧是按照AnnotationConfigApplicationContext的定义顺序来的 对于内部类的Configuration的初始化不管是静态还是非静态也依旧是外部的Configuration完成后才行 2、 内部类里的Bean的优先级均高于外层定义的Bean同时可以看到static静态内部类能够提升优先级它比非静态内部类的优先级还高 3、内部类有限原则它只作用于本Configuration类也就是说仅在本主类内提升优先级。另外若出现多个内部类按照定义顺序执行static永远高于非static哦 4、 内部类的访问权限无所谓private都行。 4、bean加载顺序规则 直接上干货了测试代码太长啦 SpringBoot2.7以后自动装配的定义文件该成了org.springframework.boot.autoconfigure.AutoConfiguration.imports Spring.factories中定义的自动装配类优先级最低本类中bean顺序按依赖优先代码顺序原则比如A/B/C三个Bean上中下顺序写的代码A依赖了C所以C比A和B都提前加载跨类的bean加载顺序按照依赖优先bean名称字母顺序加载静态内部类bean与跨类bean加载顺序一致
http://www.zqtcl.cn/news/538168/

相关文章:

  • 度更新网站做详情页网站
  • 酷炫网站模板wordpress自动发货插件
  • 网站做多个镜像wordpress无法显示向导
  • 交易类网站建设费用工厂招工最新招聘信息
  • 俄语网站建设网站建设的实训报告
  • 朝阳市做网站的公司wordpress msg
  • 企业管理系统免费版seo关于网站
  • 几度设计网站设计制作平板电脑支架
  • 游戏设计 网站上海中企动力做网站多少钱
  • flash 开发的网站网上国网app推广经验
  • pyhton可以做网站吗文章wordpress
  • 省住房城乡建设厅门户网站电子商务网站建设用什么软件
  • 怎么给自己的网站做模版企业网站开发外包
  • 哪家可以做网站东莞网站建设少儿托管
  • 最好的网站建设公司排名生物技术网站开发
  • 网站建设经验大总结不良人网页设计怎么做
  • 宁波市余姚建设局网站学做网站要代码
  • 戴尔公司网站开发的经营目标贵州省铜仁市城乡建设局网站
  • 商务网站建设简答题及答案网站备案 域名证书
  • 网站后门怎么去除贾汪城乡建设局网站
  • 烟台住房和城乡建设厅网站重庆网站界面设计
  • 企业网站推广服务协议html编程语言
  • 上海知名网站建设公司合肥建设云平台证书查询
  • 网站响应度西安哪家公司做的网站好
  • 广州市白云区网站建设维护wordpress如何匹配模板
  • 360网站导航公司地址怎么做seo 优化一般包括哪些内容
  • 龙岗高端建设网站建设南京旅游网页设计
  • 企业网站优化问题wordpress滑动
  • 亳州网站建设费用广东网站建设报价
  • ai生成作文网站驾校网站源码下载