Spring JdbcOperationsSessionRepository和SessionDestroyed不兼容

Spring JdbcOperationsSessionRepository和SessionDestroyed不兼容,spring,spring-boot,spring-session,httplistener,Spring,Spring Boot,Spring Session,Httplistener,我使用的是spring引导,我使用的是spring会话,spring在APP_会话表中创建一个会话,并向其中添加行。它有max_inactive_interval列,其中有一些秒值,在这些秒值之后会话将超时。现在,我想在会话超时之前做一些事情。我想在不同的表上执行一些数据库操作并设置一个标志 我已经为此使用了JdbcOperationsSessionRepository @Bean @Order(1) public JdbcOperationsSessionRepository sess

我使用的是spring引导,我使用的是spring会话,spring在APP_会话表中创建一个会话,并向其中添加行。它有max_inactive_interval列,其中有一些秒值,在这些秒值之后会话将超时。现在,我想在会话超时之前做一些事情。我想在不同的表上执行一些数据库操作并设置一个标志

我已经为此使用了
JdbcOperationsSessionRepository

    @Bean
@Order(1)
public JdbcOperationsSessionRepository sessionRepository(
    @Qualifier("springSessionJdbcOperations") JdbcOperations jdbcOperations,
    PlatformTransactionManager transactionManager) {
    JdbcOperationsSessionRepository repository = super.sessionRepository(jdbcOperations, transactionManager);
    repository.setDefaultMaxInactiveInterval(maxInactiveIntervalInSeconds);
    repository.setTableName(TABLE_NAME);
    return repository;
}
我试过这个

@Bean                           // bean for http session listener
public HttpSessionListener aohttpSessionListener() {
    return new HttpSessionListener() {
        @Override
        public void sessionCreated(HttpSessionEvent session) {               // This method will be called when session created
            System.out.println("Session Created with session id+" + session.getSession().getId());
        }

        @Override
        public void sessionDestroyed(HttpSessionEvent session) {         // This method will be automatically called when session destroyed
            System.out.println("Session Destroyed, Session id:" + session.getSession().getId());
            // database operations
            }

        }
    };
但根据这一点,我想这是行不通的


感谢您的帮助。提前感谢。

Spring会话JDBC不支持发布会话事件。只有Spring会话Redis支持这一点


什么是“它不起作用”呢。实际发生了什么?你期望发生什么?假设这是单元或集成测试,您的测试用例是什么?这不是单元或集成测试。我在sessionDestroyed()方法中放置了一个断点。会话像往常一样被创建和销毁,但sessionCreated()和sessionDestroyed()中的自定义代码不会被执行。