SpringBoot学习(十)Spring集成、会话、(监视和管理JMX)、WebSockets和web服务

一、Spring集成

Spring Boot为使用Spring Integration提供了一些便利,包括spring-boot-starter-integration “Starter”。Spring Integration提供了消息传递和其他传输(如HTTP、TCP等)的抽象。如果Spring Integration在类路径上可用,则通过@EnableIntegration注释初始化它。

Spring Boot还配置了一些由附加的Spring Integration模块触发的功能。如果spring-integration-jmx也在类路径上,则通过JMX发布消息处理统计信息。如果spring-integration-jdbc可用,则可以在启动时创建默认的数据库模式,如下行所示:

spring.integration.jdbc.initialize-schema=always

有关更多细节,请参见IntegrationAutoConfiguration和IntegrationProperties类。

默认情况下,如果存在Micrometer meterRegistry bean, Spring Integration的度量将由Micrometer管理。如果希望使用遗留的Spring Integration指标,请将DefaultMetricsFactory bean添加到应用程序上下文。

二、Spring会话

Spring Boot为各种数据存储提供了Spring会话自动配置。在构建Servlet web应用程序时,可以自动配置以下存储:

  • JDBC

  • Redis

  • Hazelcast

  • MongoDB

在构建反应性web应用程序时,可以自动配置以下存储:

  • Redis

  • MongoDB

如果类路径上存在一个Spring会话模块,Spring Boot将自动使用该存储实现。如果有多个实现,则必须选择要用于存储会话的StoreType。例如,要使用JDBC作为后端存储,您可以如下配置您的应用程序:

spring.session.store-type=jdbc

您可以通过设置store-type为none来禁用Spring会话。

每个存储都有特定的附加设置。例如,可以为JDBC存储定制表的名称,如下面的示例所示:

spring.session.jdbc.table-name=SESSIONS

你可以通过配置spring.session.timeout来设置会话超时,如果没有配置,自动配置将使用server.servlet.session.timeout的值。

三、监视和管理JMX

Java管理扩展(JMX)提供了监视和管理应用程序的标准机制。Spring Boot将最合适的MBeanServer作为bean公开,其ID为MBeanServer。任何使用Spring JMX注释(@ManagedResource、@ManagedAttribute或@ManagedOperation)进行注释的bean都将公开给它。

如果您的平台提供了一个标准的MBeanServer, Spring Boot将使用它并在必要时将其默认为VM MBeanServer。如果这些都失败了,就会创建一个新的MBeanServer。

四、WebSockets

Spring Boot为嵌入式Tomcat、Jetty和Undertow提供了WebSockets自动配置。如果将war文件部署到独立容器,Spring Boot假设容器负责配置其WebSocket支持。

Spring Framework为MVC web应用程序提供了丰富的WebSocket支持,可以通过spring-boot-starter-websocket模块轻松访问这些web应用程序。

WebSocket支持也可用于反应性web应用程序,需要在spring-boot-starter-webflux中包含WebSocket API:

<dependency>
    <groupId>javax.websocket</groupId>
    <artifactId>javax.websocket-api</artifactId>
</dependency>

五、Web服务

Spring Boot提供了Web服务自动配置,因此您只需定义端点即可。

Spring Web服务特性可以通过spring-boot-starter-webservices模块轻松访问。

可以分别为您的wsdl和xsd自动创建SimpleWsdl11Definition和SimpleXsdSchema bean。为此,配置它们的位置,如下面的示例所示:

spring.webservices.wsdl-locations=classpath:/wsdl

1.使用WebServiceTemplate调用Web服务

如果需要从应用程序调用远程Web服务,可以使用WebServiceTemplate类。由于WebServiceTemplate实例通常需要在使用之前进行自定义,因此Spring Boot不提供任何单个自动配置的WebServiceTemplate bean。但是,它会自动配置WebServiceTemplateBuilder,可以在需要时使用它创建WebServiceTemplate实例。

下面的代码展示了一个典型的例子:

@Service
public class MyService {

    private final WebServiceTemplate webServiceTemplate;

    public MyService(WebServiceTemplateBuilder webServiceTemplateBuilder) {
        this.webServiceTemplate = webServiceTemplateBuilder.build();
    }

    public DetailsResp someWsCall(DetailsReq detailsReq) {
         return (DetailsResp) this.webServiceTemplate.marshalSendAndReceive(detailsReq, new SoapActionCallback(ACTION));
    }

}

默认情况下,WebServiceTemplateBuilder使用类路径上可用的HTTP客户端库检测合适的基于HTTP的WebServiceMessageSender。您还可以自定义读取和连接超时如下:

@Bean
public WebServiceTemplate webServiceTemplate(WebServiceTemplateBuilder builder) {
    return builder.messageSenders(new HttpWebServiceMessageSenderBuilder()
            .setConnectTimeout(5000).setReadTimeout(2000).build()).build();
}

 

posted on 2019-12-30 16:21  木西-Muxy  阅读(728)  评论(0编辑  收藏  举报

导航