微服务架构之Spring Boot(六十八)

2022-05-23 15:42:32 浏览数 (1)

46. WebSockets

Spring Boot为嵌入式Tomcat,Jetty和Undertow提供WebSockets自动配置。如果将war文件部署到独立容器,则Spring Boot假定容器负责

其WebSocket支持的配置。

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

WebSocket支持也可用于 响应式Web应用程序,并且需要在 spring-boot-starter-webflux 旁边包含WebSocket API:

<dependency>

<groupId>javax.websocket</groupId>

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

</dependency>

47.网络服务

Spring Boot提供Web服务自动配置,因此您必须做的就是定义 Endpoints 。

该Spring Web服务功能,可以与 spring-boot-starter-webservices 模块可以轻松访问。

可以分别为您的WSDL和XSD自动创建 SimpleWsdl11Definition 和 SimpleXsdSchema beans。为此,请配置其位置,如以下示例所示:

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

48.使用 WebServiceTemplate 调用Web服务

如果需要从应用程序调用远程Web服务,则可以使用 WebServiceTemplate 该类。由于 WebServiceTemplate 实例在使用之前通常需要进行自

定义,因此Spring Boot不提供任何单个自动配置的 WebServiceTemplate bean。但是,它会自动配置 WebServiceTemplateBuilder ,可用

于在需要时创建 WebServiceTemplate 实例。

以下代码显示了一个典型示例:

默认情况下, WebServiceTemplateBuilder 使用类路径上的可用HTTP客户端库检测到合适的基于HTTP的 WebServiceMessageSender 。您

还可以按如下方式自定义读取和连接超时:

@Bean

public WebServiceTemplate webServiceTemplate(WebServiceTemplateBuilder builder) {

return builder.messageSenders(new HttpWebServiceMessageSenderBuilder()

.setConnectTimeout(5000).setReadTimeout(2000).build()).build();

}

49.创建自己的自动配置

如果您在开发共享库的公司工作,或者您在开源或商业库中工作,则可能需要开发自己的自动配置。自动配置类可以捆绑在外部jar中,仍然可以

通过Spring Boot获取。

自动配置可以与“启动器”相关联,该启动器提供自动配置代码以及您将使用它的典型库。我们首先介绍了构建自己的自动配置需要了解的内

容,然后我们将继续介绍创建自定义启动器所需的 典型步骤。

可以使用演示项目来展示如何逐步创建启动器。

49.1了解自动配置Beans

在引擎盖下,自动配置使用标准 @Configuration 类实现。额外的 @Conditional 注释用于约束何时应用自动配置。通常,自动配置类使

用 @ConditionalOnClass 和 @ConditionalOnMissingBean 注释。这可确保仅在找到相关类时以及未声明自己的 @Configuration 时才应用自

动配置。

您可以浏览源代码 spring-boot-autoconfigure 以查看Spring提供的 @Configuration 类(请参阅 META-INF/spring.factories 文

件)。

49.2找到自动配置候选者

Spring Boot检查已发布jar中是否存在 META-INF/spring.factories 文件。该文件应在 EnableAutoConfiguration 键下列出您的配置类,如

以下示例所示:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=

com.mycorp.libx.autoconfigure.LibXAutoConfiguration,

com.mycorp.libx.autoconfigure.LibXWebAutoConfiguration

如果需要按特定顺序应用配置,则可以使用 @AutoConfigureAfter 或 @AutoConfigureBefore 注释。例如,如果您提供特定于Web的配置,

则可能需要在 WebMvcAutoConfiguration 之后应用您的类。

如果您想订购某些不应该彼此直接了解的自动配置,您也可以使用 @AutoConfigureOrder 。该注释与常规 @Order 注释具有相同的语义,但为

自动配置类提供了专用顺序。

自动配置,必须加载这种方式只。确保它们是在特定的包空间中定义的,特别是它们永远不是组件扫描的目标。

0 人点赞