[非SpringBoot方式]Spring 5.2.6 集成 Spring session jdbc 2.3.0

17 篇文章 0 订阅
5 篇文章 0 订阅

spring session的官方文档对SpringBoot方式和xml配置方式介绍的都比较详细,大家应该都能看懂。但java 类配置的方式个人觉得不是很详细, 有的地方可能让人走弯路. 另外若不配springSessionRepositoryFilter会无法写入,但这个类在哪找了一会没有发现其真身.

第一步: pom.xml需要的依赖:

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring-framework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.session</groupId>
            <artifactId>spring-session-core</artifactId>
            <version>2.3.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.session</groupId>
            <artifactId>spring-session-jdbc</artifactId>
            <version>2.3.0.RELEASE</version>
        </dependency>

第二步: Spring session的配置文件:

/**
 * Spring session的配置文件
 * @author xiaofanku
 * @since 20200602
 */
@Configuration
@EnableJdbcHttpSession
public class SpringSessionConfig{
    @Bean
    public SpringHttpSessionConfiguration init(){
        JdbcHttpSessionConfiguration config = new org.springframework.session.jdbc.config.annotation.web.http.JdbcHttpSessionConfiguration();
        config.setTableName("spring_session");
        return config;
    }
}

XML配置的方式官方文档介绍的非常详细: Spring XML Configuration

第三步: 将SpringSessionConfig导入到Spring Application的配置文件中

/**
 * Spring framework配置类
 *
 * @author xiaofanku
 * @since 20200511
 */
@Configuration
@PropertySource("classpath:global.properties")
@EnableLoadTimeWeaving
@EnableAspectJAutoProxy(proxyTargetClass=true)
@EnableTransactionManagement(proxyTargetClass = true)
@Import(value = {SpringSessionConfig.class})
public class ThronesAppConfig {
    @Autowired
    private Environment env;
}

因为在SpringSessionConfig类中没有配置数据源(DataSource)和事务管理器(PlatformTransactionManager ),这个类配置文件中需要有相应的@Bean注解的方法, 不一定非要是返回值PlatformTransactionManager的方法,它的实现类也可以,我在这个类中用的是JpaTransactionManager

第四步: 拦截器springSessionRepositoryFilter

/**
 * Spring 项目启动类
 *
 * @author xiaofanku
 * @since 20200511
 */
public class App extends AbstractAnnotationConfigDispatcherServletInitializer {
    //ETC
    @Override
    protected Filter[] getServletFilters() {
        DelegatingFilterProxy filterProxy = new DelegatingFilterProxy();
        filterProxy.setTargetBeanName("springSessionRepositoryFilter");
        return new Filter[]{
            new org.springframework.web.filter.CharacterEncodingFilter("UTF-8", true), 
            filterProxy};
    }
}

最后: 成功了

[EL Finest]: properties: 2020-06-02 20:05:49.119--ServerSession(1131509144)--Thread(Thread[main,5,main])--property=eclipselink.logging.level.sql; value=FINE
[EL Finest]: properties: 2020-06-02 20:05:49.142--ServerSession(1131509144)--Thread(Thread[main,5,main])--property=eclipselink.logging.timestamp; value=true
[EL Finest]: properties: 2020-06-02 20:05:49.144--ServerSession(1131509144)--Thread(Thread[main,5,main])--property=eclipselink.logging.thread; value=true
[EL Finest]: properties: 2020-06-02 20:05:49.145--ServerSession(1131509144)--Thread(Thread[main,5,main])--property=eclipselink.logging.session; value=true
[EL Finest]: properties: 2020-06-02 20:05:49.147--ServerSession(1131509144)--Thread(Thread[main,5,main])--property=eclipselink.logging.exceptions; value=true
[EL Finest]: properties: 2020-06-02 20:05:49.148--ServerSession(1131509144)--Thread(Thread[main,5,main])--property=eclipselink.logging.parameters; value=true
[EL Finer]: 2020-06-02 20:05:49.76--Thread(Thread[main,5,main])--initializing session manager
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值