IO
大多数应用程序在某些时候都需要处理输入和输出(IO)相关的问题。Spring Boot 提供了多种工具并与一系列技术集成,以在你需要 IO 功能时提供帮助。本节涵盖标准的 IO 功能,例如缓存和验证,以及更高级的主题,例如调度和分布式事务。我们还将介绍如何调用远程 REST 或 SOAP 服务以及发送电子邮件。
章节总结
📄️ 缓存
Spring Framework 提供了对透明地向应用程序添加缓存的支持。其核心抽象将缓存应用于方法,从而根据缓存中可用的信息减少方法的执行次数。缓存逻辑是透明应用的,不会对调用者造成任何干扰。更多详细信息,请参阅 Spring Framework 参考文档的相关章节。
📄️ Hazelcast
如果 Hazelcast 在 classpath 中,并且找到了合适的配置,Spring Boot 会自动配置一个 HazelcastInstance,你可以将其注入到你的应用程序中。
📄️ Quartz Scheduler
Spring Boot 为使用 Quartz 调度器提供了多项便利,包括 spring-boot-starter-quartz starter。如果 Quartz 可用,则会自动配置一个 Scheduler(通过 SchedulerFactoryBean 抽象)。
📄️ 发送电子邮件
Spring Framework 通过使用 JavaMailSender 接口为发送电子邮件提供了抽象,而 Spring Boot 也为其提供了自动配置以及一个 starter 模块。
📄️ 验证
只要类路径中存在 JSR-303 实现(例如 Hibernate Validator),Bean Validation 1.1 所支持的方法验证功能就会自动启用。这使得可以在 Bean 方法的参数和/或返回值上使用 jakarta.validation 约束注解。对于包含此类注解方法的目标类,需要在类型级别上添加 @Validated 注解,以使其方法中的内联约束注解被扫描到。
📄️ 调用 REST 服务
Spring Boot 提供了多种便捷的方式来调用远程 REST 服务。如果你正在开发一个非阻塞的响应式应用程序,并且使用的是 Spring WebFlux,那么你可以使用 WebClient。如果你更倾向于使用阻塞式 API,则可以使用 RestClient 或 RestTemplate。
📄️ Web Services
Spring Boot 提供了 Web Services 自动配置,因此你只需定义你的 @Endpoint Bean 即可。
📄️ 使用 JTA 的分布式事务
Spring Boot 通过使用从 JNDI 获取的事务管理器,支持跨多个 XA 资源的分布式 JTA 事务。