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

做商城网站公司手机设计画图软件

做商城网站公司,手机设计画图软件,陕西咸阳做网站的公司,可信的郑州网站建设使用Async异步注解导致该Bean在循环依赖时启动报BeanCurrentlyInCreationException异常的根本原因分析#xff0c;以及提供解决方案 今天在自己项目中使用Async的时候#xff0c;碰到了一个问题#xff1a;Spring循环依赖#xff08;circular reference#xff09;问题。 …使用Async异步注解导致该Bean在循环依赖时启动报BeanCurrentlyInCreationException异常的根本原因分析以及提供解决方案 今天在自己项目中使用Async的时候碰到了一个问题Spring循环依赖circular reference问题。 或许刚说到这有的小伙伴就会大惊失色了。Spring不是解决了循环依赖问题吗它是支持循环依赖的呀怎么会呢 出现使用Async导致循环依赖问题的必要条件 已开启EnableAsync的支持Async注解所在的Bean被循环依赖了 为什么有小伙伴跟我说我使用Async即使本类方法调用也从来木有遇到这个错误啊难道它不常见 为此经过我的一番调查包括看一些同事、小伙伴的代码发现并不是使用Async没有启动报错而是他本类调用的时候直接调用的方法这样Async是不生效的但小伙伴却全然不知而已。 至于Async没生效这种问题为何没报出来甚至过了很久很久都没人发现和关注 其实道理很简单它和事务不生效不一样Async若没生效99%情况下都不会影响到业务的正常进行因为它不会影响数据正确性只会影响到性能无非就是异步变同步呗这是兼容的 我们知道事务不生效和Async不生效的根本原因都是同一个直接调用了本类方法而非接口方法/代理对象方法。 解决这类不生效问题的方案一般我们都有两种 自己注入自己然后再调用接口方法当然此处的一个变种是使用编程方式形如AInterface a applicationContext.getBean(AInterface.class);这样子手动获取也是可行的~~~本文不讨论这种比较直接简单的方式 使用AopContext.currentProxy(); 让不调用本类的Async方法不就可以了让不产生循环依赖不就可以了这也是解决方案 1:新建一个线程池配置类AsyncConfig EnableAsync Configuration public class AsyncConfig implements AsyncConfigurer {Overridepublic Executor getAsyncExecutor() {ThreadPoolTaskExecutor executor new ThreadPoolTaskExecutor();executor.setCorePoolSize(10); //核心线程数executor.setMaxPoolSize(20); //最大线程数executor.setQueueCapacity(1000); //队列大小executor.setKeepAliveSeconds(300); //线程最大空闲时间executor.setThreadNamePrefix(fsx-Executor-); //指定用于新创建的线程名称的前缀。executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); // 拒绝策略一共四种此处省略executor.initialize();return executor;}// 异常处理器当然你也可以自定义的这里我就这么简单写了~~~Overridepublic AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {return new SimpleAsyncUncaughtExceptionHandler();} }2:新增一个HelloService接口 public interface HelloService {Object hello(Integer id);void fun1(); }3:新增一个HelloServiceImpl实现类 Service public class HelloServiceImpl implements HelloService{Autowiredprivate HelloService helloService;Overridepublic Object hello(Integer id) {System.out.println(线程名称 Thread.currentThread().getName());helloService.fun1(); // 使用接口方式调用而不是thisreturn service hello;}AsyncOverridepublic void fun1() {System.out.println(线程名称 Thread.currentThread().getName());} }4:新增一个异步测试类 SpringBootTest public class AsyncTest {Autowiredprivate HelloService helloService;Testpublic void test(){helloService.hello(1);} }5:启动测试类 此种做法首先是Spring中一个典型的循环依赖场景自己依赖自己。本以为能够像解决事务不生效问题一样依旧屡试不爽但没想到非常的不给面子启动即报错 报错如下BeanCurrentlyInCreationException异常 6:解决方法 在HelloServiceImpl类上Autowired注解下加上Lazy注解即懒加载 7:启动项目 输出如下成功了
http://www.yutouwan.com/news/461612/

相关文章:

  • 怎样创建设计公司网站网站后台首页
  • 如何在公司服务器建个内部 网站做网站的费用进什么科目
  • 移动网站开发服务器爱游戏app下载官方网站
  • 大连建站免费模板WordPress一键安装安全
  • 网站快照怎么做微信建设网站找哪家
  • 网站开发与维护专业百度搜不到自己的网站
  • 网站运营难做吗新西兰注册公司做网站
  • 海南省建设厅网站首页自己做淘宝客登录网站
  • 什么 电子商务网站建设与管网站相互推广怎么做
  • 静态网站登陆怎么做网站建设购买什么境外主机
  • 江苏省内网站建设移动商城个人中心
  • 网站做标签搭建一个网站多少钱
  • 网站源码做exe执行程序网络营销如何进行网站推广
  • 长沙做网站推广公司咨询犀牛云网站做的怎么样
  • 手机网站开发标准即时设计网页
  • 如何创建一个网站用来存放东西合肥网站推广 公司
  • 免费的开发网站建设哪里 教做网站带维护
  • 公众号怎么做微网站html 购物网站
  • 怎么做查询网站网站前台和后台
  • WordPress站群模版开发一个小程序流程
  • 建设网站合同范本登不了wordpress
  • 外贸网站示例哪里有好网站设计
  • 河间哪里有做网站的上海网站建设导航
  • 网站搭建的意义个人网站备案没有座机
  • 资中移动网站建设平台引流推广怎么做
  • 建设信用卡在网站挂失几步58同城最新招聘网
  • 宝和网站建设如何建设酒店预订系统网站
  • 会计题库网站怎么做win7如何安装iis来浏览asp网站
  • 免费自己制作app软件下载安徽优化网站
  • 济南住房与城乡建设官网网站标题具体怎样优化