Java跨模块调用方式

 更新时间:2024年08月27日 09:26:43   作者:animatelife  
这篇文章主要介绍了Java跨模块调用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Java常见的调用其他类或包的方法

  • Spring IoC
  • SPI
  • Listener/Callback
  • EventBus(类比Guava的事件总线)

Spring IoC

  • 将所有类的实例的生成和管理都交由第三方,调用方从第三方拿到被调用方的实例,从而实现调用

SPI

  • SPI即Service Provider Interface,调用方只有包含该方法的接口,需要调用方自己将获取到的接口实现类实例注入到容器中,再从容器中取出调用
  • 使用SPI的示例:JDK自带的ServiceLoader.loader、Dubbo等

Listener/Callback

  • Listener是一个集合,子模块A将要使用的方法所在接口的实例放在这个集合中,子模块B将这些接口的实现类塞进这个集合中,A要使用的时候就会看这个Listener集合具体哪些接口有实现,再通过接口的方式去调用
  • 使用Listener/Callback的示例:常见的各种GUI、事件处理

EventBus

  • 调用方通过总线去调用被调用方,调用方与被调用方使用同一个总线对象,调用方向总线发送某类型的事件对象,此时被调用方在总线注册自己的实例同时告诉总线自己订阅的事件类型,通过相同事件类型实现了调用方与被调用方之间的调用关系
  • 调用方与被调用方之间的数据传输,将需要传输的数据作为某类型的事件对象的成员属性,在实现调用关系的同时,数据也得以传输
  • 使用EventBus的示例:Guava的事件总线

Java两个模块之间调用service注入问题

遇到上述问题需要加入以下语句

@SpringBootApplication(scanBasePackages = {“com.heisenberg.weather.pro”,“com.heisenberg.authmgr”})
@MapperScan(basePackages = {“com.heisenberg.weather_pro.mapper”,“com.heisenberg.authmgr.dao”})

需要在调用别的模块的主程序上加入scanBasePackages 范围,要不然程序不知道你引用的是谁,并且要扫描创建的实体类的位置basePackages 

否则出现以下情况:

No qualifying bean of type ‘com.zxq.api.dao.UserDao’ available: expected at least …

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java IO读取文件的实例详解

    Java IO读取文件的实例详解

    这篇文章主要介绍了Java IO读取文件的实例详解的相关资料,主要介绍字符流和字节流的内容,需要的朋友可以参考下
    2017-07-07
  • java面试常问的Runnable和Callable的区别

    java面试常问的Runnable和Callable的区别

    大家好,本篇文章主要讲的是java面试常问的Runnable和Callable的区别,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • MyBatis中${} 和 #{} 有什么区别小结

    MyBatis中${} 和 #{} 有什么区别小结

    ${} 和 #{} 都是 MyBatis 中用来替换参数的,它们都可以将用户传递过来的参数,替换到 MyBatis 最终生成的 SQL 中,但它们区别却是很大的,今天通过本文介绍下MyBatis中${} 和 #{} 有什么区别,感兴趣的朋友跟随小编一起看看吧
    2022-11-11
  • 详解Java实现批量压缩图片裁剪压缩多种尺寸缩略图一键批量上传图片

    详解Java实现批量压缩图片裁剪压缩多种尺寸缩略图一键批量上传图片

    这篇文章主要介绍了Java实现批量压缩图片裁剪压缩多种尺寸缩略图一键批量上传图片,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • poi导出word表格的操作讲解

    poi导出word表格的操作讲解

    这篇文章主要介绍了poi导出word表格的操作讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • 新手入门了解ArrayList扩容机制

    新手入门了解ArrayList扩容机制

    这篇文章主要介绍了新手入门了解ArrayList扩容机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • MyBatis不同Mapper文件引用resultMap实例代码

    MyBatis不同Mapper文件引用resultMap实例代码

    这篇文章主要介绍了mybatis 不同Mapper文件引用resultMap的实例代码,非常不错具有参考借鉴价值,需要的朋友可以参考下
    2017-07-07
  • Java用POI解析excel并获取所有单元格数据的实例

    Java用POI解析excel并获取所有单元格数据的实例

    下面小编就为大家带来一篇Java用POI解析excel并获取所有单元格数据的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • SpringBoot的Admin服务监控详解

    SpringBoot的Admin服务监控详解

    这篇文章主要介绍了SpringBoot的Admin服务监控详解,Spring Boot Admin(SBA)是一个开源的社区项目,用于管理和监控 Spring Boot 应用程序,需要的朋友可以参考下
    2024-01-01
  • 解决IDEA中Maven依赖包导入失败报红问题(总结最有效8种解决方案)

    解决IDEA中Maven依赖包导入失败报红问题(总结最有效8种解决方案)

    这篇文章主要介绍了解决IDEA中Maven依赖包导入失败报红问题,本文通过图文详解给大家总结了最有效的8种解决方法,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07

最新评论