0

我们有几个模块,每个模块都有很少的服务。我们正在使用 play 框架,它与果汁依赖注入器配合得很好。

例如,

对于模块 x,

@implementedBy(XI1Impl.class)
interface XI1 {....}


class XI1Impl implements XI1
{....}

现在,我们需要在调用任何服务 API 之前添加一个通用检查 API。最简单的方法是在每个 API 的方法实现中为每个模块的每个服务添加检查调用。

有没有更好的方法来为服务添加通用检查,以便消费者应用程序在注入任何服务并首先调用任何服务 API 时执行检查调用。

Guice 是否有任何注释或任何方式来配置检查 API 调用,以便在注入服务时它将首先执行特定调用。

在播放框架中,过滤器类可以为控制器做同样的工作,但我不知道服务级别是否存在类似的概念。

请建议我是否可以编写逻辑,该逻辑可以对所选服务的所有方法进行通用检查,而无需修改其服务 API 实现。

提前致谢。

4

1 回答 1

0

看来您想在调用服务函数之前运行一些代码,试试这个。

  1. 您需要创建一个类和一个函数,其中将包含您的函数,该函数将在您的实际服务调用之前每次运行

    class FilterService {
        def apply(block: => Any => Any) = {
            println("This block will run before actual function call.")
            block()
        }
    }
    
  2. 现在你必须在你的服务中使用它

    class ActualService @Inject()(filterService: FilterService){
        def actualFunction(str: String) = filterService.apply { data =>
            // `data` you can use if you are returing anything from your filter service function.
            println("In actual function calling.")
            str
        }
    }
    

希望能帮助到你 :)

于 2018-07-08T13:48:04.273 回答