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-01-01
  • HttpMessageConverter报文信息转换器的深入讲解

    HttpMessageConverter报文信息转换器的深入讲解

    在Spring中内置了大量的HttpMessageConverter,通过请求头信息中的MIME类型,选择相应的HttpMessageConverter,这篇文章主要给大家介绍了关于HttpMessageConverter报文信息转换器的相关资料,需要的朋友可以参考下
    2022-01-01
  • Java 讲解两种找二叉树的最近公共祖先的方法

    Java 讲解两种找二叉树的最近公共祖先的方法

    树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合,这篇文章主要给大家介绍了关于Java求解二叉树的最近公共祖先的相关资料,需要的朋友可以参考下
    2022-04-04
  • 实例解决Java异常之OutOfMemoryError的问题

    实例解决Java异常之OutOfMemoryError的问题

    在本篇文章中,我们给大家分享了关于解决Java异常之OutOfMemoryError的问题的方法,有此需要的朋友们学习下。
    2019-02-02
  • IntelliJ IDEA 创建spring boot 的Hello World 项目(图解)

    IntelliJ IDEA 创建spring boot 的Hello World 项目(图解)

    这篇文章主要介绍了IntelliJ IDEA 创建spring boot 的Hello World 项目的步骤详解,需要的朋友可以参考下
    2018-01-01
  • Java黑科技:replace首个替换一秒搞定

    Java黑科技:replace首个替换一秒搞定

    要实现只替换第一个匹配项,可以使用Java中的String类的replaceFirst方法,该方法接受两个参数,第一个参数是要替换的字符串或正则表达式,第二个参数是替换后的字符串,需要的朋友可以参考下
    2023-10-10
  • Spring-cloud 注册服务提供者搭建方法

    Spring-cloud 注册服务提供者搭建方法

    本篇文章主要介绍了Spring-cloud 注册服务提供者搭建方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • SpringBoot @Value注解支持配置自动刷新能力扩展方式

    SpringBoot @Value注解支持配置自动刷新能力扩展方式

    本文介绍了如何通过自定义注解和BeanPostProcessor实现SpringBoot中@Value注解的配置自动刷新能力,主要步骤包括:定义一个支持动态刷新的注解,实现配置的动态变更,以及通过BeanPostProcessor扫描并刷新使用@Value注解的变量
    2024-12-12
  • 解决Maven项目idea找不到本地仓库jar包问题以及使用mvn install:install-file

    解决Maven项目idea找不到本地仓库jar包问题以及使用mvn install:install-file

    这篇文章主要介绍了解决Maven项目idea找不到本地仓库jar包问题以及使用mvn install:install-file,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • javaweb分页原理详解

    javaweb分页原理详解

    这篇文章主要为大家详细介绍了javaweb分页的原理,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04

最新评论