# 升级到 2.x

有了新的主要版本， Spring Session 团队利用这个机会进行了一些非被动的更改。这些更改的重点是改进和协调 Spring Session 的 API，以及删除不受欢迎的组件。

## 基线更新

Spring Session  2.0 需要 Java8 和 Spring Framework5.0 作为基线，因为其整个代码库现在基于 Java8 源代码。有关升级 Spring 框架的更多信息，请参见[Upgrading to Spring Framework 5.x](https://github.com/spring-projects/spring-framework/wiki/Upgrading-to-Spring-Framework-5.x)。

## 替换和移除模块

作为项目拆分模块的一部分，现有的`spring-session`已被`spring-session-core`模块所取代。`spring-session-core`模块只保存公共的一组 API 和组件，而其他模块则包含适当的`SessionRepository`的实现以及与该数据存储相关的功能。这适用于几个现有的模块，这些模块以前是一个简单的依赖聚合器助手模块。通过新的模块设置，以下模块实际进行了实现：

* Spring MongoDB 的会话

* Spring Redis 会议

* Spring Session  JDBC

* Spring 会议 Hazelcast

此外，从主项目存储库中删除了以下内容：

* Spring Session 数据 Gemfire

  * [`spring-session-data-geode`]（https://github.com/ Spring-projects/ Spring-session-data-geode）

## 替换和删除包、类和方法

对包、类和方法进行了以下更改：

* `ExpiringSession`API 已合并到`Session`API 中。

* 已经对`Session`API 进行了增强，以充分利用 Java8。

* `Session`API 已通过`changeSessionId`支持进行了扩展。

* 已经更新了`SessionRepository`API，以更好地与 Spring 数据方法命名约定保持一致。

* 如果没有底层`Session`对象，`AbstractSessionEvent`及其子类将不再可构造。

* `RedisOperationsSessionRepository`使用的 Redis 命名空间现在是完全可配置的，而不是部分可配置的。

* 已更新了 Redis 配置支持，以避免注册 Spring Session 特定的`RedisTemplate` Bean。

* 已更新了 JDBC 配置支持，以避免注册 Spring Session 特定的`JdbcTemplate` Bean。

* 以前不推荐的类和方法已在整个代码库中被删除。

## 支持度下降

作为对`HttpSessionStrategy`的更改及其与来自反应性世界的对应物的对齐的一部分，对在单个浏览器实例中管理多个用户会话的支持已被删除。正在考虑在未来的版本中引入一个新的 API 来取代此功能。