我们目前正在努力建立一个面向服务层的结构,持久性管理器作为最低层,服务类在顶部。持久性管理器将对实体执行所有基本操作,例如创建、更新、查找、查找所有、过滤、排序等。服务将包含实体的最小可行业务逻辑。
我们现在想要实现管理器不能访问其他管理器的规则,服务需要跨管理器执行工作。Java 类型系统及其可见性规则并未提供这一点,尽管 - private/protected 是全局有效的,不仅对其他管理器,管理器需要对其他服务可见。
所以我们认为 AOP 肯定会启用类之间的访问限制,但我们希望将规则视为编译时,而不是运行时。似乎 - 没有可能深入研究这一点 - AspectJ 提供了编译时 AOP,但这是否包括如上所述的类之间的编译时访问限制?
对此的任何暗示都将帮助我们快速决定是否要走这条路。
谢谢!