You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Liferay 7.4中通用实体类应置于api还是service模块?

问题解答

核心结论

ProductFilter 类应该放在 api模块。api模块的核心职责就是定义对外暴露的接口、请求/响应实体等共享组件,service模块作为api的实现方,天然应该依赖并能访问api模块中的类。

解决service模块部署时的包解析异常

你遇到的service模块无法解析api包的问题,大概率是api模块的打包配置或依赖引用方式有误,常见修复方式:

  • 检查api模块打包类型:确保api模块被打包成可被依赖的jar包(比如Maven中设置<packaging>jar</packaging>),避免打包时遗漏ProductFilter所在的包。
  • 确认service模块的依赖配置:比如Maven中要正确引入api模块的依赖,且依赖范围为compile(默认范围),保证编译和运行时都能加载到api模块的类。
  • 检查类的可见性:确保ProductFilter类的访问修饰符为public,且所在包未被Java模块系统限制对外访问。

为什么不能放在service模块或同时放在两个模块

  • 放在service模块:api模块的接口需要用这个类定义请求参数,但api模块不应依赖service模块(会违背分层设计的依赖倒置原则),必然出现类找不到的问题。
  • 同时放在两个模块:会导致类加载器加载同一全限定名的两个类实例,引发类转换异常、重复定义等冲突,绝对不可取。

内容的提问来源于stack exchange,提问作者Zirui Wang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 20:12:01