原生映象支援

從 6.0 版本開始,Spring Integration 應用程式透過 Spring AOT 原生提示支援 GraalVM 編譯為原生映象。對於大多數常見用例,例如帶有 @Bean 方法的端點定義、帶有 lambda 的 Java DSL 配置和 @MessagingGateway 介面掃描(匯入),該框架提供了相應的反射、代理和序列化提示。如果配置在 POJO 方法上使用了訊息註解(@ServiceActivator@Splitter 等),或者 POJO 方法與 IntegrationFlowBuilder.handle(Object service, String methodName) API 一起使用,它們也必須用 @Reflective 註解標記,因為它們是由框架反射呼叫的。

原生映象不支援 XML 配置。

如前所述,帶有 @MessagingGateway 註解的服務介面,當它們被 @IntegrationComponentScan 掃描或在 @Import 註解中使用時,會由框架處理,並且相應的代理提示會暴露到 AOT 貢獻中。當使用 IntegrationFlow.from(Class<?> serviceInterface) API 宣告閘道器時,為這些介面配置的代理必須手動暴露。

@Configuration
@EnableIntegration
@ImportRuntimeHints(GatewayRuntimeHints.class)
public class IntegrationConfiguration {

    @Bean
    IntegrationFlow someFlow() {
        return IntegrationFlow.from(SomeGateway)
                  // ...
                   .get();
    }

    public interface SomeGateway {

        void doSomething(Object payload);

    }

    private static class GatewayRuntimeHints implements RuntimeHintsRegistrar {

        @Override
        public void registerHints(RuntimeHints hints, ClassLoader classLoader) {
            hints.proxies().registerJdkProxy(
                                   AopProxyUtils.completeJdkProxyInterfaces(SomeGateway));
        }

    }

}
IntegrationFlow 內容在 AOT 處理階段不進行處理。因此,一些提示,例如上面提到的閘道器代理提示,必須由目標應用程式提供。

當然,配置只是整合解決方案的一部分。最重要的部分是網路資料傳輸以及持久儲存。這就是序列化在許多用例中派上用場的地方。Spring Integration 為框架內部使用的這些型別將序列化提示暴露到原生映象配置中:StringNumberLongDateArrayListHashMapPropertiesHashtableExceptionUUIDGenericMessageErrorMessageMessageHeadersAdviceMessageMutableMessageMutableMessageHeadersMessageGroupMetadataMessageHolderMessageMetadataMessageHistoryMessageHistory.EntryDelayHandler.DelayedMessageWrapper。對於使用者特定的資料,主要作為訊息負載存在,必須透過 RuntimeHintsRegistrar 實現手動暴露序列化提示,如上面所示的閘道器代理,以及相應的 RuntimeHints.serialization().registerType() API。

建議使用 Spring Boot 及其相應的構建工具來開發原生整合應用程式。
© . This site is unofficial and not affiliated with VMware.