java - 如何使用网关模式?

标签 java design-patterns spring-mvc

我有一个拦截器类,在 postHandle 方法中,我需要捕获应用程序的所有事件请求以进行审核。我想在我的服务和存储库之间实现网关模式。我不知道如何实现网关层,它可以将我的 HttpServletRequest 请求对象转换为我的域对象并将其传递到存储库层。下面是我的代码:

  @Override
  public void postHandle(HttpServletRequest request,
                         HttpServletResponse response, 
                         Object handler,
                         ModelAndView modelAndView) throws Exception {
        String requestURI = request.getRequestURI();
        auditService.save((Audit)reuest);
  }

如何将请求对象发送到服务,然后通过网关发送到存储库?

最佳答案

(我是从 Spring Integration 的角度来说的,但这应该适用)。

网关模式用于将数据从服务放入系统。该“服务”可以是一个简单的 java 类,也可以以相同的方式绑定(bind)到连接器以从外部源输入。网关定义了使用什么“ channel ”以及该 channel 上的数据本质上是什么(尽管这不必是明确的)。

要创建网关,您需要定义网关上存在哪些数据以及这些数据如何与其他服务连接。您可以使用 spring integration ,或某种形式的听众。或其他。这是你的选择。

定义数据进入系统的网关。这看起来是您的 Http 请求处理程序。在这里,您可以将数据推送到网关,而不用关心另一端发生什么。然后,您将创建两个端点,一个用于您的服务,以便正确处理数据,另一个用于您的存储库,以便维护存档。 (如果您愿意,您甚至可以稍后添加另一个。)

关于java - 如何使用网关模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21021546/

相关文章:

java - 选择查询中的 JDBCPreparedStatement 和参数 (?)

java - 如何以编程方式测量请求的成本(cpm_usd)?

java.lang.StackOverflowError 由 setImageResource

java - 方法作用域仅在另一个方法内

java - Spring mvc Controller bean 配置

java - 在 Spring 的 RequestMapping 中,{parameter :. +} 是否与 {parameter} 不同

java - 如何用空列表而不是 null 抛出自定义异常?

c++ - 策略模式 C++

C# 类库 - 单例设计模式

java - Spring-MVC中如何实现用户锁定?