java - Java包结构中的模块与层

标签 java architecture aop package

我曾经把所有东西都放在这样的包里:

com.company.app.module1
com.company.app.module2

但它使基于包的 AOP 切入点变得困难,并导致需要 IDE 才能理解的巨大包。

所以现在我意识到我需要一个更深层次的包结构,但我总是被撕裂。像这样给予模块优先权?

com.company.app.module1.domain
com.company.app.module1.logic
com.company.app.module1.persistence
com.company.app.module2.domain
com.company.app.module2.logic
com.company.app.module2.persistence

或者像这样给图层设置偏好?

com.company.app.domain.module1
com.company.app.domain.module2
com.company.app.logic.module1
com.company.app.logic.module2
com.company.app.persistence.module1
com.company.app.persistence.module2

各自的优缺点?

最佳答案

模块优先。

我有一个最初是层优先的项目,但它变得过于庞大而难以阅读和维护,所以我们重构了它。它也使用了 AOP——没有任何问题。我们只是在包定义的中间使用了 .. (我们使用了带有 aspectj 语法的 spring aop)。这是它的样子:

execution(* com.foo.app.modules..service..*.*(..))

这匹配 modules.module1.servicemodules.module2.service

关于java - Java包结构中的模块与层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4821130/

相关文章:

java - 在 JSF primefaces 中上传文件

java - ' ... != null' 还是 'null != ....' 性能最好?

java - android应用程序 Activity 中的保存按钮?

delphi - 通过库代码传递对象时避免强制转换(在 Delphi 中)

.net - CQRS + EventSourcing 可扩展性

c# - 如何在保持持久性无知的同时创建丰富的领域对象?

java - AspectJ - 无法覆盖切入点 - 参数类型不匹配

java - 有没有一种简单的方法可以让android studio自动添加版权声明?

java - Scala:围绕建议或 Python 装饰器实现 Java 的 AspectJ

spring - 将 AOP 应用于 JDK 类