近期在搭建一个公司的SpringCloud项目,但是在整合rocketmq的时候,启动的时候发现容器重复创建了,找了好久都没有找到问题,最后想到可以再两次重复创建的地方看一下他的堆栈信息,果然找到了,
StringUtils.join(Thread.currentThread().getStackTrace(), “\n”)

java.base/java.lang.Thread.getStackTrace(Thread.java:1602)
com.upward.common.core.rocketmq.handle.RocketApplicationCallback.onApplicationEvent(RocketApplicationCallback.java:61)
com.upward.common.core.rocketmq.handle.RocketApplicationCallback.onApplicationEvent(RocketApplicationCallback.java:34)
org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176)
org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169)
org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143)
org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:421)
org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:378)
org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:938)
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:586)
org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145)
org.springframework.boot.SpringApplication.refresh(SpringApplication.java:732)
org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:414)
org.springframework.boot.SpringApplication.run(SpringApplication.java:302)
org.springframework.boot.SpringApplication.run(SpringApplication.java:1303)
org.springframework.boot.SpringApplication.run(SpringApplication.java:1292)
com.upward.issueticket.IssueTicketApplication.main(IssueTicketApplication.java:14)===========java.base/java.lang.Thread.getStackTrace(Thread.java:1602)
com.upward.common.core.rocketmq.handle.RocketApplicationCallback.onApplicationEvent(RocketApplicationCallback.java:61)
com.upward.common.core.rocketmq.handle.RocketApplicationCallback.onApplicationEvent(RocketApplicationCallback.java:34)
org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176)
org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169)
org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143)
org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:421)
org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:427)
org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:378)
org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:938)
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:586)
org.springframework.cloud.context.named.NamedContextFactory.createContext(NamedContextFactory.java:137)
org.springframework.cloud.context.named.NamedContextFactory.getContext(NamedContextFactory.java:105)
org.springframework.cloud.context.named.NamedContextFactory.getInstance(NamedContextFactory.java:146)
org.springframework.cloud.openfeign.FeignClientFactoryBean.get(FeignClientFactoryBean.java:344)
org.springframework.cloud.openfeign.FeignClientFactoryBean.feign(FeignClientFactoryBean.java:123)
org.springframework.cloud.openfeign.FeignClientFactoryBean.getTarget(FeignClientFactoryBean.java:413)
org.springframework.cloud.openfeign.FeignClientFactoryBean.getObject(FeignClientFactoryBean.java:402)
org.springframework.cloud.openfeign.FeignClientsRegistrar.lambda$registerFeignClient$0(FeignClientsRegistrar.java:235)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1249)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1191)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1154)
com.upward.common.core.rocketmq.handle.RocketApplicationCallback.onApplicationEvent(RocketApplicationCallback.java:64)
com.upward.common.core.rocketmq.handle.RocketApplicationCallback.onApplicationEvent(RocketApplicationCallback.java:34)
org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176)
org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169)
org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143)
org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:421)
org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:378)
org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:938)
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:586)
org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145)
org.springframework.boot.SpringApplication.refresh(SpringApplication.java:732)
org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:414)
org.springframework.boot.SpringApplication.run(SpringApplication.java:302)
org.springframework.boot.SpringApplication.run(SpringApplication.java:1303)
org.springframework.boot.SpringApplication.run(SpringApplication.java:1292)
com.upward.issueticket.IssueTicketApplication.main(IssueTicketApplication.java:14)

这个是堆栈信息,中间用-----隔开,第一份是第一次创建容器的回调的时候,第二份是第二次回调,说到底还是openFeign的创建,它在Spring源码中的doCreateBean中会判断,如果当前容器不存在这个对象,就会重新创建一个新的容器

突然觉得之前Spring的源码没白嗑


补充一下,这个类NameContextFactory是为了每个微服务可以有自己独立的ApplicationContext,所以才独立出来的,但是由于他在createContext之后会调用refresh方法,所以会造成重复发布创建完成事件。详细了解: https://www.jianshu.com/p/d1e478d5fddb

关于SpringCloud,Spring容器重复初始化的问题相关推荐

  1. mysql 使用中 修复 blog_Java My-Blog之mysql容器重复初始化严重bug修复过程

    My Blog项目已经开源了两个多月,也收获了不少star,在这里谢谢各位朋友的建议及帮助.由于个人原因,这个开源项目最初的定位其实是一个docker技术与springboot框架整合的Java博客系 ...

  2. Spring容器的初始化过程

    1.Spring 容器高层视图 Spring 启动时读取应用程序提供的Bean配置信息,并在Spring容器中生成一份相应的Bean配置注册表,然后根据这张注册表实例化Bean,装配号Bean之间的依 ...

  3. idea中生成spring的 xml配置文件_【132期】面试再被问到Spring容器IOC初始化过程,就拿这篇文章砸他~...

    点击上方"Java面试题精选",关注公众号 面试刷图,查缺补漏 >>号外:往期面试题,10篇为一个单位归置到本公众号菜单栏->面试题,有需要的欢迎翻阅 阶段汇总集 ...

  4. boot spring 没有父子容器_理解 MyBatis 是如何在 Spring 容器中初始化的

    MyBatis 初始化过程就是 生成一些必须的对象放到 Spring 容器中 .问题是这个过程到底生成了哪些对象?当遇到 MyBatis 初始化失败时,如何正确的找到分析问题的切入点?本文将针对这些问 ...

  5. 【132期】面试再被问到Spring容器IOC初始化过程,就拿这篇文章砸他~

    程序员的成长之路 互联网/程序员/技术/资料共享 关注 阅读本文大概需要 14 分钟. 作者:拥抱心中的梦想 juejin.im/post/5ab30714f265da237b21fbcc 一.老规矩 ...

  6. Spring容器IOC初始化过程—今天终于进行总结了

    https://www.colabug.com/2539499.html 作为一个经常使用Spring的后端程序员,小编很早就想彻底弄懂整个Spring框架了!但它整体是非常大的,所有继承图非常复杂, ...

  7. Spring - Spring容器概念及其初始化过程

    引言 工作4年多,做了3年的java,每个项目都用Spring,但对Spring一直都是知其然而不知其所以然.鄙人深知Spring是一个高深的框架,正好近期脱离加班的苦逼状态,遂决定从Spring的官 ...

  8. Spring容器是怎么初始化的

    本文分析Spring容器初始化过程.在Spring Framework中,所有类型的容器都是由ApplicationContext接口表示的,而 AbstractApplicationContext是 ...

  9. Spring mvc 上下文初始化过程

    为什么80%的码农都做不了架构师?>>>    在软件开发的中,如果某些特性的使用比较普遍,那么这些特性往往可以作为平台特性来实现,通过对这些平台特性进行有效的封装,使其向其他应用开 ...

最新文章

  1. 华为设备经典的地址以及远程登录(VTY)实施
  2. 【Leetcode】【Medium】Rotate Image
  3. 用java制作心理测试软件_0基础学习制作app
  4. SAP Spartacus维护CMS Component到Angular Component的源代码位置
  5. 线性代数学习全攻略(内附机器学习路径图)
  6. CSS3 -- display:flex
  7. 女朋友生气了吗?算法比直男更懂她
  8. hive之动态分区插入数据及其参数配置
  9. 建立一个中文名字的文件夹Python
  10. nmap输出xml转换htm方法
  11. ionic的用法和作用
  12. 云计算与虚拟化技术发展编年史
  13. kirin710f是什么处理器_麒麟710F处理器怎么样
  14. 快速应对面试--分门别类--7.栈和队列
  15. 计算机等级考网络课程答案,《计算机应用基础》课程考试试卷
  16. 福利分享:1024程序员节,给大家推荐一个极简win10
  17. 微信沟通接口上线,开启移动应用与公众号的连接
  18. Python|简易银行ATM程序制作
  19. 前端案例 ——注册页面(html+css实现)
  20. 硅谷之行 (18) 硅谷-斯坦福-旧金山

热门文章

  1. 1024@程序员:图灵社区福利来了,请本人签收
  2. cmd查看python库命令_怎么用命令查看python的库
  3. 图像加噪与滤波处理(python+opencv)
  4. ML_12 Sum-Produkt Networks 和积网络
  5. 英文文献 ---英语词汇整理
  6. android 设置iptv vlan tag的命令,IPTV+VLAN设置教程
  7. scala学习复习笔记超详细(变量)
  8. Android仿微信朋友圈5实现朋友圈列表
  9. 库卡(KUKA)机器人入门学习必备知识
  10. 使用ROS melodic下 控制真实UR5机器人 手把手教程