maven 多模块数据传输问题
maven多模块划分,比如service模块和persist模块存在调用关系,当service层调用persist时的入参可能是个自定义对象(例如:user类),那在模块构建中这种传输对象时两个模块各自写一份,还是说单独写成一个模块专门管理这种入参出参的对象(这样的话各模块不能单独的编译测试),所以想听听大家的意见,是否有更好的方式来降低这种耦合调用
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
看看这个资料:
http://edu.51cto.com/course/course_id-5314.html
按模块开发,是要按实现的功能,业务进行区分。
如:
1.要做推送,那推送可能是一个模块
2.要做日志,日志是一个模块。
与业务无关,可以减少依赖,对于开发是很有好处的。
回复
如果service对persist有依赖,service的单独编译似乎没有意义。
回复
我思考了一下,或许你的意思是,在程序中抽象出了persist的接口,service依赖与此接口,但是不依赖于persist的具体实现模块。如果是这样子,user类最好和接口放在一起,因为user类也是接口的一部分。就user类来说,并不是个很好的例子,user类可以说系统的核心类,几乎每个模块都需要用到,单独写成一个模块应该更合适。
恩恩,最好的方式应该是将interface和入参出参单独抽出来一个模块,然后persist和service分别依赖他,persist提供实现类,service完成调用,这样persist和service耦合度就降低了,而且两边都能单独编译,对嘛?
回复
从耦合分离来说,这种方式是比较好的方式。不过,建议在接口中提供默认实现(例如:抛出异常或者打印错误消息)。
回复
这是我从日志模块中学习到的,现在的习惯是约定优于配置。提供一个默认模块,不需要额外信息配置。不知道你是否了解slf4j和logback,这是非常好的例子。slf4j本身提供了一个NOP模块的默认实现,只是在开始时打印错误信息,随后不输出任何日志。slf4j可以看作你说的接口,logback可以看作你的具体实现。推荐参考。
这个问题一般而言非常简单,service层调用persist意味着service对persist有依赖。直接将user类放入persist中就可以了。
至于你所说的两个方案,两个模块各自写一份是绝对不可行的,程序员不善于管理重复代码。当后期人员加入时,一个模块的变更,另一个模块肯定不能跟随变化。重复代码在设计时就应该杜绝。
单独写成一个模块是可以考虑的,特别是user类要被多个模块共享时。
但是我的推荐还是将user类放入persist模块中,需求复杂,很难保证能读取和修改user的模块竟然不需要将user持久化。