005.整合Spring session和Redis

2017-08-26  本文已影响0人  airkisser

1.添加maven依赖

        <!--jedis-->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>${jedis.version}</version>
        </dependency>
        <!--lettuce-->
        <dependency>
            <groupId>biz.paluch.redis</groupId>
            <artifactId>lettuce</artifactId>
            <version>${lettuce.version}</version>
        </dependency>
        <!--Jackson-->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>${jackson.version}</version>
        </dependency>
        

2.redis.properties

redis.host=localhost
redis.port=6379
redis.password=
redis.dbIndex=0

3.spring-session.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <context:annotation-config/>

    <context:property-placeholder location="classpath:redis.properties" order="2" ignore-unresolvable="true"/>

    <bean class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration"/>

    <bean class="org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory">
        <property name="database" value="${redis.dbIndex}"/>
        <property name="hostName" value="${redis.host}"/>
        <property name="port" value="${redis.port}"/>
        <property name="password" value="${redis.password}"/>
    </bean>
</beans>

4.web.xml

添加HttpSessionEventPublisher监听器以及DelegatingFilterProxy,DelegatingFilterProxy通过代理的方式从spring中获取名字跟filter-name相同的实现了javax.servlet.Filter接口bean,因此filter-name必须为"springSessionRepositoryFilter"。

<!--当一个session结束的时候, 该监听器都会通知SessionRegistryImpl来删除这个session的信息-->
    <listener>
        <listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
    </listener>

    <!--Spring Session-->
    <filter>
        <filter-name>springSessionRepositoryFilter</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>springSessionRepositoryFilter</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>ERROR</dispatcher>
    </filter-mapping>
上一篇下一篇

猜你喜欢

热点阅读