spring boot 入门之spring session&RESTful APIs

位置:首页>文章>详情   分类: 教程分享 > Java教程   阅读(7424)   2024-04-17 12:31:25

一.简介

   spring boot 入门之spring session实现restful apis。通过前面的了解和使用,我们知道可以通过spring boot或者spring mvc整合spring session的方式来实现session的共享达到应用可以水平扩展集群。session默认情况是存了一个cookie在响应的数据里面,然后每次通过cookie来验证session的,但是restful设计中一般不会使用cookie,所以spring session提供了将session id存放在http协议的header中,本文主要讲解如何使用。

二.编码介绍

HttpSession & RESTful APIs

原理:Spring Session 可以允许session在header里面提供来实现RESTful APIs

Spring配置

在创建一个spring boot项目后,加入相关的依赖。现在我们就可以来进行相关配置。这个配置主要负责创建一个servlet Filter替换原有的HttpSession 使用spring session.主要添加以下spring 相关配置:
@Configuration
@EnableRedisHttpSession //①
public class HttpSessionConfig {

        @Bean
        public LettuceConnectionFactory connectionFactory() {
                return new LettuceConnectionFactory(); //②注意,spring boot项目这里不需要创建一个链接工厂,在application配置文件中配置了相关信息会默认生成一个链接工厂供使用。
        }

        @Bean
        public HttpSessionStrategy httpSessionStrategy() {
                return new HeaderHttpSessionStrategy(); //③
        }
}
  ①@EnableRedisHttpSession 注解用来创建一个spring的过滤器类,类的名称为 springSessionRepositoryFilter 这个过滤器用来替换原生的 HttpSession 使用spring session。这个例子中,Spring Session通过Redis来实现存储。
  ②创建了一个RedisConnectionFactory 来使Spring Session链接到Redis Server。关于spring data redis相关配置可以参考之前的spring redis整合。(注意,spring boot项目这里不需要创建一个链接工厂,在application配置文件中配置了相关信息会默认生成一个链接工厂供使用。)
  ③我们自定义了Spring  Session的HttpSession ,将它整合到了HTTP协议的header里面,替换掉默认的放在cookie中。

HttpSessionListener 即session监听处理

Spring Session支持HttpSessionListener,通过将SessionDestroyedEvent 和SessionCreatedEvent转换成 HttpSessionEvent 被定义在SessionEventHttpSessionListenerAdapter来实现。需要使用监听,注意以下几点:
  • 确保你所实现的SessionRepository 支持并且配置到启动SessionDestroyedEvent 和SessionCreatedEvent
  • SessionEventHttpSessionListenerAdapter 配置为spring容器中的一个bean
  • 注入每一个HttpSessionListener 到SessionEventHttpSessionListenerAdapter
如果你使用Redis的方式记录HttpSession,你需要将每一个HttpSessionListener配置为bean。例如,假设你想要支持Spring Security的并发控制,并且需要使用HttpSessionEventPublisher,你可以简单地将HttpSessionEventPublisher添加为一个bean。 在Java配置中,这可能如下所示:
@Configuration
@EnableRedisHttpSession
public class RedisHttpSessionConfig {

        @Bean
        public HttpSessionEventPublisher httpSessionEventPublisher() {
                return new HttpSessionEventPublisher();
        }

        // ...
}
或者xml
<bean class="org.springframework.security.web.session.HttpSessionEventPublisher"/>
地址:https://www.leftso.com/article/299.html

相关阅读

spring boot 入门之spring session实现restful apis。通过spring boot或者spring mvc整合spring session的方式来实现sessio...
spring boot 入门之整合spring session实现session共享。一直以来Java编程中web项目中的session共享问题都是一个很难解决的问题。接下来将讲解通过sprin...
Java编程之Spring Boot 文件上传 REST风格API ajax方式
前言在这个Spring HATEOAS示例中,我们将学习如何将HATEOAS链接添加到在spring boot项目中创建的现有REST API
使用OAuth2安全的Spring REST API,Secure Spring REST API using OAuth2(含demo代码下载)
Spring boot JPA MySQL整合实现CRUD REST接口,在这篇文章中,我们将为简单的笔记应用程序构建一个Restful CRUD API。注释可以有标题和一些内容。我们将首先...
1.概要在本Spring boot教程中,我们将学习如何验证发送到PUT/POST API请求的数据BODY
1.引言Spring 5通过引入一种名为Spring WebFlux的全新反应框架来支持响应式编程范例
创建REST API时,良好的文档是有帮助的。而且,API中的每一个变化都应该在参考文档中同时描述。手动完成这是一个乏味的操作,因此这个过程的自动化是不可避免的。