Integration Graph Controller

如果您的应用程序是基于 Web(或在具有嵌入式 Web 容器的 Spring Boot 之上构建),并且 Spring Integration HTTP 或 WebFlux 模块(分别参见 HTTP SupportWebFlux Support)存在于类路径中,则可以使用 IntegrationGraphController`将 `IntegrationGraphServer`功能显示为 REST 服务。为此,HTTP 模块中提供了 `@EnableIntegrationGraphController`和 `@Configuration`类注释以及 `<int-http:graph-controller/>`XML 元素。此配置与 `@EnableWebMvc`注释(或 XML 定义的 `<mvc:annotation-driven/>)一起,注册了一个 IntegrationGraphController @RestController,其中可以在 @EnableIntegrationGraphController`注释或 `<int-http:graph-controller/>`元素上配置其 `@RequestMapping.path。默认路径是 /integration

IntegrationGraphController @RestController 提供以下服务:

  • @GetMapping(name = "getGraph"):检索自上一次 IntegrationGraphServer 刷新以来的 Spring Integration 组件的状态。o.s.i.support.management.graph.Graph 以 REST 服务的 @ResponseBody 形式返回。

  • @GetMapping(path = "/refresh", name = "refreshGraph"):刷新当前 Graph 以获取实际运行时状态,并以 REST 响应的形式返回。无需刷新指标的图形。在检索图形时实时提供它们。如果在上次检索图形后修改了应用程序上下文,则可以调用刷新。在这种情况下,会重新构建图形。

你可以使用 Spring Security 和 Spring MVC 项目提供的标准配置选项和组件为 IntegrationGraphController 设置安全性和跨域限制。以下示例实现了这些目标:

<mvc:annotation-driven />

<mvc:cors>
	<mvc:mapping path="/myIntegration/**"
				 allowed-origins="http://localhost:9090"
				 allowed-methods="GET" />
</mvc:cors>

<security:http>
    <security:intercept-url pattern="/myIntegration/**" access="ROLE_ADMIN" />
</security:http>


<int-http:graph-controller path="/myIntegration" />

以下示例展示如何使用 Java 配置执行相同操作:

@Configuration
@EnableWebMvc // or @EnableWebFlux
@EnableWebSecurity // or @EnableWebFluxSecurity
@EnableIntegration
@EnableIntegrationGraphController(path = "/testIntegration", allowedOrigins="http://localhost:9090")
public class IntegrationConfiguration extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
	    http
            .authorizeRequests()
               .antMatchers("/testIntegration/**").hasRole("ADMIN")
            // ...
            .formLogin();
    }

    //...

}

请注意,出于方便,“@EnableIntegrationGraphController”注解提供一个“allowedOrigins”属性。这为“path”提供“GET”访问。对于更复杂的配置,可以使用标准 Spring MVC 机制来配置 CORS 映射。