• 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();
    }
  • 相关阅读:
    linux 常用命令
    博客园兼容手机端
    博客园点击页面,显示句子
    win10 系统禁止自动更新
    php获取数组中第一个元素或最后一个元素
    设计模式
    高并发抢购
    mySql 数据库优化
    3dMax+VR的安装步骤
    3dmax
  • 原文地址:https://www.cnblogs.com/muxi0407/p/12120326.html
Copyright © 2020-2023  润新知