gpt4 book ai didi

Java自定义注释来限制对方法的访问

转载 作者:行者123 更新时间:2023-12-01 05:42:53 29 4
gpt4 key购买 nike

我正在两层上构建应用程序。 Web层和业务层。

在业务层内,我有一些公共(public)方法,可以在业务层内或从 Web 层调用。

我只想从 Web 层(安全层)调用其中一些方法。

我想知道是否可以在业务层中创建注释,例如 @Public 这意味着我可以从 Web 层调用此方法,以及 @Private所以我不应该从网络层使用这个方法。

当我尝试从 Web 层(在 Eclipse 中)调用 @private 方法时,它会给我一个警告?

还有:我可以有办法自动列出所有这些私有(private)和公共(public)方法吗?

最佳答案

据我所知,您无法让 Eclipse 使用注释来确定您是否可以从某个文件访问某个方法。为此,Eclipse 必须知道该文件是 Web 层的一部分还是业务层的一部分。

为了列出具有特定注释的所有方法,您可以在运行时使用反射。在 Eclipse 中可能有过滤器,但我不知道有任何基于注释的过滤器。

也许您应该选择另一种方法,我将简短地描述我们如何做到这一点:

我们的服务可以实现两个接口(interface):

  • 一个公共(public)接口(interface),包含 Web 层可能看到的所有方法
  • 一个私有(private)接口(interface),包含业务逻辑内部的所有方法

我们将这些接口(interface)拆分为两个 Eclipse 项目 - 一个公共(public) api 项目和一个包含服务和内部 api 的实现项目 - 并且只允许从 Web 层访问公共(public) api 项目。

由于我们的服务(EJB 3.0)需要一个接口(interface),因此如果我们有内部方法,我们就必须添加内部接口(interface)。但是,使用其他技术(如 EJB 3.1),您也可能只提供公共(public)接口(interface)。

另一种方法可能是将接口(interface)分成两个包,例如myproject.api.pub(public 是关键字)和 myproject.api.internal,然后在 Eclipse 中使用基于包的过滤器。

关于Java自定义注释来限制对方法的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6690523/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com