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

标签 java annotations

我正在两层上构建应用程序。 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/

相关文章:

java - Maven 不会编译 Java 注解?

java - App Engine 数据存储区和低级 API

Android:android 编译时验证意向附加已通过

java - 在 Spring Boot 中添加属性值的正确方法是什么

Java Spark,无法使用 PUT 或 PATCH 更新数据

java - Spring:为什么我在使用注解时需要applicationContext.xml?

java - JAXB 将属性添加到简单数据类型的 XmlElement

java - CQRS 是在 Google App Engine 上实现社交应用程序的好方法吗?

java - 根据 RFC5322 和 https ://en. 进行电子邮件 ID 验证 wikipedia.org/wiki/Email_address

java - 如何使用 java 和 selenium 引用以下 html 元素?