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中只有值传递

    一文了解为什么Java中只有值传递

    Java 传参是值传递还是引用传递?这个问题很基础,但是许多人都有点懵。本文就来通过一些示例带大家详细了解一下,需要的可以参考一下
    2022-07-07
  • mybatis之如何获取表中某一列的最大值

    mybatis之如何获取表中某一列的最大值

    这篇文章主要介绍了mybatis之如何获取表中某一列的最大值问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • springboot相互依赖 server相互引用方式

    springboot相互依赖 server相互引用方式

    这篇文章主要介绍了springboot相互依赖 server相互引用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • JDK8中新增的原子性操作类LongAdder详解

    JDK8中新增的原子性操作类LongAdder详解

    这篇文章主要给大家介绍了关于JDK8中新增的原子性操作类LongAdder的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。
    2017-08-08
  • Maven Plugin的@Mojo和@Execute的具体使用

    Maven Plugin的@Mojo和@Execute的具体使用

    本文主要介绍了Maven Plugin的@Mojo和@Execute的具体使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • 深入学习java并发包ConcurrentHashMap源码

    深入学习java并发包ConcurrentHashMap源码

    这篇文章主要介绍了深入学习java并发包ConcurrentHashMap源码,整个 ConcurrentHashMap 由一个个 Segment 组成,Segment 代表”部分“或”一段“的意思,所以很多地方都会将其描述为分段锁。,需要的朋友可以参考下
    2019-06-06
  • java修改JFrame默认字体方式

    java修改JFrame默认字体方式

    这篇文章主要介绍了java修改JFrame默认字体方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Spring Cloud搭建eureka过程图解

    Spring Cloud搭建eureka过程图解

    这篇文章主要介绍了Spring Cloud搭建eureka过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • SpringBoot整合Druid、Redis的示例详解

    SpringBoot整合Druid、Redis的示例详解

    Druid 是阿里巴巴开源平台上一个数据库连接池实现,结合了 C3P0、DBCP 等 DB 池的优点,同时加入了日志监控。这篇文章主要介绍了SpringBoot整合Druid、Redis的实例详解,感兴趣的朋友跟随小编一起看看吧
    2022-02-02
  • Spring Boot使用RestTemplate消费REST服务的几个问题记录

    Spring Boot使用RestTemplate消费REST服务的几个问题记录

    这篇文章主要介绍了Spring Boot使用RestTemplate消费REST服务的几个问题记录,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06

最新评论