Spring Boot 2.7.6 正式版发布, SpringBoot 2.7.6来了

Spring Boot 2.7.6 版本发布,包括44个错误修复、文档改进和依赖项升级。主要修复了ScheduledBeanLazyInitializationExcludeFilter的自动配置问题、@ContextHierarchy时的横幅重复打印、配置属性绑定中的桥方法处理等。此外,还升级了Byte Buddy、Dropwizard Metrics、Elasticsearch等多个依赖,并提供了matecloud微服务平台的推荐。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、发布说明

11 月 25 日官方发布了 Spring Boot 2.7.6 版本,此版本包括 44 个错误修复、文档改进和依赖项升级。
在这里插入图片描述

二、更新内容

2.1 bug 修复

  • 即使未启用基于注释的计划,ScheduledBeanLazyInitializationExcludeFilter 也会自动配置
  • 使用 @ContextHierarchy 时,SpringBootContextLoader 会打印两次横幅
  • 如果 Properties migrator 尝试映射其元数据数据条目包含无效配置属性名称的属性,则会导致应用程序无法启动
  • 配置属性绑定不处理桥方法
  • 当管理上下文刷新时,通过配置树配置 management.server.port 会导致 ConverterNotFoundException
  • XMLUnit 的依赖关系管理不完整
  • Spring Boot 的 Lettuce 指标默认情况下启用直方图,很难将其关闭
  • 修复 Selenium 的依赖关系管理不完整
  • 使用 IPv6 地址配置 spring.redis.sentinel.nodes 时出现 NumberFormatException

2.2 文档

  • 使 Tomcat 多连接器示例与建议保持一致,以声明方式配置 SSL
  • ConditionalOnClass 不适用于 Java 8 上的 Bean 方法
  • Actuator 文档对 k8s 启动探针具有误导性
  • 链接到 Micrometer 的 @Timed 文档
  • 阐明 spring.cache.type 属性与 Hazelcast 的使用
  • Actuator API 文档中的示例 git.commit.time 至未来几千年的时间
  • 指向功能的链接描述了已移至其他地方的部分
  • 修复参考文档中的 kafka streams 自动启动描述错误
  • OAuth 2 配置示例使用无法识别的值作为授权授予类型
  • 修复 logging.adoc 中的拼写错误
  • 协调 “类型安全配置属性” 部分中的代码示例

2.3 依赖升级

  • 升级至 Byte Buddy 1.12.19
  • 升级至 Dropwizard Metrics 4.2.13
  • 升级至 Ehcache3 3.10.8
  • 升级至 Elasticsearch 7.17.7
  • 升级至 Hazelcast 5.1.5
  • 升级至 Hibernate 5.6.14.Final
  • 升级至 HttpClient5 5.1.4
  • 升级至 HttpCore5 5.1.5
  • 升级至 Janino 3.1.9
  • 升级至 Jaybird 4.0.7.java8
  • 升级至 MariaDB 3.0.9
  • 升级至 Micrometer 1.9.6
  • 升级至 Netty 4.1.85.Final
  • 升级至 Postgresql 42.3.8
  • 升级至 Reactor 2020.0.25
  • 升级至 Spring AMQP 2.4.8
  • 升级至 Spring Data 2021.2.6
  • 升级至 Spring Framework 5.3.24
  • 升级至 Spring GraphQL 1.0.3
  • 升级至 Spring Kafka 2.8.11
  • 升级至 Spring REST Docs 2.0.7.RELEASE
  • 升级至 Spring Security 5.7.5
  • 升级至 Spring WS 3.1.4
  • 升级至 Tomcat 9.0.69

微服务平台推荐

matecloud微服务平台,此项目已经升级至Spring Boot 2.7.6版本

<think>好的,我需要帮助用户在Spring Boot 2.7.6中集成Spark。首先,我得回忆一下相关步骤,并确保信息准确。用户提到的是Spark,应该是指Apache Spark,那个大数据处理框架。Spring Boot本身是一个用于简化Spring应用开发的框架,而集成Spark可能需要处理依赖配置、配置Spark会话,以及如何在Spring Boot应用中使用它。 首先,用户可能需要添加Spark的依赖到他们的项目中。Spring Boot通常使用Maven或Gradle,所以需要确认正确的依赖项。例如,在Maven的pom.xml中添加Spark Core和Spark SQL的依赖,同时需要注意版本兼容性。用户用的是Spring Boot 2.7.6,可能对应的Java版本是8或11,而Spark的版本需要与之兼容。比如,Spark 3.x支持Java 8和11,所以可能推荐Spark 3.3.0或更高版本。 接下来,需要配置SparkSession,这在Spark 2.0之后是入口点。用户需要在Spring Boot中初始化SparkSession,可能需要作为Bean来管理,这样可以在应用的其他部分注入使用。这里需要注意的是Spark的配置,比如master节点设置为local[*]或者在集群模式下运行,以及其他可能的配置参数。 然后,需要确保Spark的上下文正确关闭,避免资源泄漏。Spring Boot的@PreDestroy注解可能用在这里,在应用关闭时关闭SparkSession。 另外,用户可能想看到示例代码,比如如何创建一个简单的Spark任务,比如读取文件或处理数据,并在Spring Boot的服务中调用它。这部分需要展示如何在Controller或Service层使用Spark进行数据处理。 还需要注意依赖冲突的问题,因为Spring Boot和Spark可能依赖不同版本的库,比如Jackson或者Slf4j。这时候可能需要排除某些传递依赖,或者调整版本号以避免冲突。 最后,可能还需要提到一些常见问题,比如性能调优、日志配置,或者在分布式环境中运行时的注意事项,比如如何将Spark应用提交到集群而不是本地运行。 总结下来,步骤大致是:添加依赖、配置SparkSession、编写示例代码、处理依赖冲突、关闭资源,以及可能的优化和问题排查。需要将这些步骤详细但清晰地呈现给用户,确保他们能够按照步骤操作成功集成。</think>在Spring Boot 2.7.6中集成Apache Spark需要以下步骤,注意需根据Spark版本调整依赖和配置: ### 一、添加Spark依赖 在`pom.xml`中添加(以Spark 3.3.0为例): ```xml <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.12</artifactId> <version>3.3.0</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_2.12</artifactId> <version>3.3.0</version> </dependency> ``` *注意:此处通过`<exclusions>`解决与Spring Boot日志组件的冲突[^1]* ### 二、配置SparkSession Bean 在配置类中创建SparkSession: ```java @Configuration public class SparkConfig { @Bean public SparkSession sparkSession() { return SparkSession.builder() .appName("SpringBootSparkDemo") .master("local[*]") // 生产环境需替换为集群地址 .config("spark.sql.shuffle.partitions", "4") .getOrCreate(); } @PreDestroy public void closeSparkSession() { sparkSession().close(); } } ``` $$SparkSession = \text{Spark入口点}, \quad master=\text{local[*]} \text{表示本地模式}$$ ### 三、使用Spark进行数据处理 在Service层实现词频统计示例: ```java @Service public class WordCountService { @Autowired private SparkSession sparkSession; public Map<String, Long> countWords(String text) { Dataset<String> words = sparkSession.createDataset( Arrays.asList(text.split(" ")), Encoders.STRING() ); return words.groupBy("value").count() .collectAsList() .stream() .collect(Collectors.toMap( row -> row.getString(0), row -> row.getLong(1) )); } } ``` ### 四、验证集成结果 创建REST接口测试: ```java @RestController @RequestMapping("/spark") public class SparkController { @Autowired private WordCountService wordCountService; @GetMapping("/wordcount") public Map<String, Long> wordCount(@RequestParam String sentence) { return wordCountService.countWords(sentence); } } ``` 访问`http://localhost:8080/spark/wordcount?sentence=hello world hello spark`将返回: $$ \{ "hello":2, "world":1, "spark":1 \} $$ ### 五、生产环境注意事项 1. 集群模式配置需修改`.master("spark://your-cluster-ip:7077")` 2. 建议通过`spark-submit`提交应用时动态获取配置参数 3. 使用`SparkConf`自定义配置时应避免与Spring Boot配置冲突[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值