来自受限层的Java调用方法

来自受限层的Java调用方法,java,security,reflection,service,layer,Java,Security,Reflection,Service,Layer,我甚至不确定这是否可行,但我想征求社区的普遍意见 我必须解决以下问题: 我的项目有两层,一个核心层和一个业务层。 这个核心层提供了业务层。此时,业务类可以导入核心类并执行它们想要的任何操作。核心类只能导入核心类并使用其方法,禁止访问业务类及其各自的方法 我想添加一个特定功能: 我不想给Core任何对业务层的正常访问,但我想创建一个接口或类似的东西(我不知道如何在这里表达自己,因为我不知道这是否可能),它为Core类提供了一些业务类要使用的特定方法 有人能帮我吗,或者至少给我一些阅读指南,或者在哪

我甚至不确定这是否可行,但我想征求社区的普遍意见

我必须解决以下问题:

我的项目有两层,一个核心层和一个业务层。 这个核心层提供了业务层。此时,业务类可以导入核心类并执行它们想要的任何操作。核心类只能导入核心类并使用其方法,禁止访问业务类及其各自的方法

我想添加一个特定功能: 我不想给Core任何对业务层的正常访问,但我想创建一个接口或类似的东西(我不知道如何在这里表达自己,因为我不知道这是否可能),它为Core类提供了一些业务类要使用的特定方法

有人能帮我吗,或者至少给我一些阅读指南,或者在哪里搜索

提前感谢您的支持

编辑:
我将Spring框架与Seam和JBoss结合使用,这可以通过使用AspectJ实现。您可以用AspectJ语法编写规则,如果不强制执行,将产生生成时错误。有关示例,请参阅本文。

您可能面临的是模块依赖和循环依赖的设计。简言之,核心需要的业务方法可能必须重新分解为“utils”模块或“业务核心”模块,然后两者都可以访问。我只是在猜测


除了自动化构建之外,像Maven这样的构建工具还鼓励这种模块化和依赖性。一个以一个模块开始的项目在完成时被分成3-4个模块,这种情况并不少见。

将特定方法从业务层移动到核心层。或者考虑使用一个公共模块。从核心层和业务层的定义看,我认为保持核心类核心,即一种框架。只有业务层应该依赖于任何通用的东西(核心应该提供)。因此,如果您有业务层提供的东西,并且希望被Core使用,那么将该功能解耦并将其添加到Core.Ok听起来是合乎逻辑的。如果我不想让Core访问整个业务层,但只访问业务的一个非常特定的部分,您会有什么建议?我使用maven。如果您不想使用第三个模块:我会向Core添加一个通用接口,该接口由业务中的某个组件实现。然后,您可以通过JavaServiceLoader或自己的工厂查找实现,并将接口传递回core。仍然存在循环依赖,但不会将业务类导入核心。避免循环依赖的唯一方法是创建第三个模块(T),使C依赖于T,B依赖于T。此类模块通常称为“api”或“spi”,几乎完全由接口、工厂和常量组成。