映射失败

发生的条件:映射层实现某个接口,并且该接口中必须有方法,此时会导致无法访问该接口。

如题下图所示:

若删除MemberService中的代码,让其成为一个空的接口,则映射可以访问。

原因

由于spring默认,实现了接口的会以jdk代理形式产生代理类,当某个类实现了接口时,会读取接口内的代码,并且丢失了注解,导致没有进入spring容器内,所以访问不到。

若接口内没有代码,则以当前的类作为被代理对象。

ps:这里有一个问题就是,微服务项目里映射写到接口中,feign却可以调用到映射接口。

异步注解Async失效

发生条件:直接访问一个加了异步注解的方法(相当于用当前对象访问)

结果显示调用其他单例的异步方法时启动了新线程,但是调用自己的方法没有异步。

原因

代理产生了一个新的代理对象(不是当前的类,当前代码层面上的类是被代理对象),但是在服务层里直接调用自己,相当于没有让代理对象执行这个方法。

而MemberServiceManage可以异步,是通过spring拿到代理对象去执行的,是从“外部”,而在方法"内部"直接addUser()相当于用被代理对象去调用,而不是代理对象。

参考:每特教育

SpringMVC 接口 JDK动态代理导致映射失败的原因 异步注解Async失效 微服务映射的位置相关推荐

  1. jdk动态代理invoke方法自动运行原因

    invoke 方法介绍 想要知道 invoke方法为什么会自动调用我们先要来了解一下这个方法 public interface InvocationHandler { public Object in ...

  2. 【拿来吧你】JDK动态代理

    java proxy 因为最近一段时间准备将这几年做的一些业务和技术做个沉淀,也自己造的一些轮子,发现时不时就会需要用到动态代理和反射,所以今天打算先对jdk的动态代理这部分内容做个简单的整理 介绍 ...

  3. 08.jdk动态代理原理

    课程标题<jdk动态代理底层原理分析> 课程内容: 1.什么是代理模式 2.代理模式应用场景有哪些 3.代理模式实现方式有哪些 4.静态代理与动态代理区别 5.JDK动态代理原理分析 6. ...

  4. JDK动态代理为什么必须要基于接口?

    前几天的时候,交流群里的小伙伴抛出了一个问题,为什么JDK的动态代理一定要基于接口实现呢? 好的安排,其实要想弄懂这个问题还是需要一些关于代理和反射的底层知识的,我们今天就盘一盘这个问题,走你~ 一个 ...

  5. 【原创】分布式之缓存击穿 【原创】自己动手实现静态资源服务器 【原创】自己动手实现JDK动态代理...

    [原创]分布式之缓存击穿 什么是缓存击穿 在谈论缓存击穿之前,我们先来回忆下从缓存中加载数据的逻辑,如下图所示 因此,如果黑客每次故意查询一个在缓存内必然不存在的数据,导致每次请求都要去存储层去查询, ...

  6. 【动态代理】从源码实现角度剖析JDK动态代理

    相比于静态代理,动态代理避免了开发人员编写各个繁锁的静态代理类,只需简单地指定一组接口及目标类对象就能动态的获得代理对象.动态代理类的源码是在程序运行期间由JVM根据反射等机制动态的生成,所以不存在代 ...

  7. 框架源码专题:Spring是如何集成Mybatis的?Spring怎么管理Mapper接口的动态代理

    文章目录 1. Spring集成Mybatis代码示例 2. Spring 如何解析Mybatis配置文件 3. Spring是怎么管理Mapper接口的动态代理的 4. Spring整合Mybati ...

  8. (转)面试必备技能:JDK动态代理给Spring事务埋下的坑!

    一.场景分析 最近做项目遇到了一个很奇怪的问题,大致的业务场景是这样的:我们首先设定两个事务,事务parent和事务child,在Controller里边同时调用这两个方法,示例代码如下: 1.场景A ...

  9. 什么鬼?弃用JDK动态代理,Spring5 默认使用 CGLIB 了?

    Spring5 AOP 默认使用 Cglib 了?我第一次听到这个说法是在一个微信群里: 群聊天 真的假的?查阅文档 刚看到这个说法的时候,我是保持怀疑态度的. 大家都知道 Spring5 之前的版本 ...

  10. 浅谈Spring中JDK动态代理与CGLIB动态代理

    前言 Spring是Java程序员基本不可能绕开的一个框架,它的核心思想是IOC(控制反转)和AOP(面向切面编程).在Spring中这两个核心思想都是基于设计模式实现的,IOC思想的实现基于工厂模式 ...

最新文章

  1. 提高mysql性能的开源软件
  2. 【OpenCV 4开发详解】图像上绘制几何图形
  3. 华为路由器的常用命令
  4. 解决maven官方库中没有oracle jdbc驱动问题 编辑
  5. 循环尝试,不释放CPU
  6. c语言添加收支情况,C语言编写一个计算个人所得税的程序,要求输入收入金额,能够输...
  7. 利用pagespeed插件优化网站css层叠样式文件
  8. php 警告方法 不可用,升级PHP版本后警告信息的逐一解决
  9. 【转载】Docker镜像打包示例
  10. typora设置标题自动编号
  11. tony的js学习笔记--基础知识(随时更新)
  12. 使用PlotNeuralNet绘制自己的网络结构图
  13. 打不开计算机或文件夹,求助:我的电脑文件夹打不开了
  14. 对策论基础---其他类型对策简介
  15. sudo 切换用户 普通用户
  16. 户型平面原型设计-简介
  17. Chrome浏览器使用谷歌翻译插件的正确方法
  18. 如何立即尝试macOS High Sierra Beta
  19. C#合并两个(多个)集合
  20. 【特征工程】特征工程技术与方法

热门文章

  1. SLAM--intel realsense2在ORB SLAM2 和 ORB SLAM3下建图和重定位(ubuntu 20.04, opencv 4.2.0 以上)
  2. php getter,对象访问器 getter和setter
  3. 计算机信息与自然科学,郑旭飞 - 计算机与信息科学学院 - Powered by 西南大学
  4. C/C++[codeup 2046]8皇后
  5. 合法的括号序列匹配数
  6. java实现调查问卷_jsp70516调查问卷自动生成与分析系统 双数据库 mysql版
  7. a ppt of CRF
  8. 跟阿铭学linux书摘
  9. 河海大学文天学院计算机科学与技术,河海大学文天学院计算机科学与技术2010级软件工程试卷...
  10. dockerfile文件名_第八章 Dockerfile文件解析(二)