将Spring Session JDBC与现有数据库一起使用(不是springboot)

穆罕默德·霍利德B:

我的应用程序在没有Spring Boot的情况下与Spring Web MVC框架一起运行。现在,我想使用spring session JDBC将会话存储到应用程序使用的数据库中。我在网上找到的所有示例都使用spring boot,如果不使用spring boot,则它们使用的数据源配置EmbeddedDatabase如下所示:

    @Bean
    public EmbeddedDatabase dataSource() {
            return new EmbeddedDatabaseBuilder() 
                            .setType(EmbeddedDatabaseType.H2)
                            .addScript("org/springframework/session/jdbc/schema-h2.sql").build();
    }

我有使用HikariCP的数据源配置,并且我希望Spring会话使用此数据源配置。

@Bean
public DataSource dataSource() {
    HikariConfig config = new HikariConfig();
    config.setDriverClassName(env.getRequiredProperty("jdbc.driver"));
    config.setJdbcUrl(env.getRequiredProperty("jdbc.url"));
    config.setUsername(env.getRequiredProperty("jdbc.username"));
    config.setPassword(env.getRequiredProperty("jdbc.password"));
    config.setMinimumIdle(env.getRequiredProperty("jdbc.pool.minimumIdle", Integer.class));
    config.setMaximumPoolSize(env.getRequiredProperty("jdbc.pool.maximumPoolSize", Integer.class));
    config.addDataSourceProperty("cachePrepStmts", env.getRequiredProperty("jdbc.prop.cachePrepStmts"));
    config.addDataSourceProperty("prepStmtCacheSize", env.getRequiredProperty("jdbc.prop.prepStmtCacheSize"));
    config.addDataSourceProperty("prepStmtCacheSqlLimit", env.getRequiredProperty("jdbc.prop.prepStmtCacheSqlLimit"));
    HikariDataSource ds = new HikariDataSource(config);
    return ds;
}

如何使用当前配置与Spring Session集成?

xerx593:

据我了解spring-session javaconfig-jdbc sample / doc,您“只是”需要:

  1. 用注释“您的配置类”(YourConfigorg.springframework.session.jdbc.config.annotation.web.http.EnableJdbcHttpSession

  2. 命名您的DataSource“数据源”。(完成!;)

  3. 提供一个PlatformTransactionManager豆,立足dataSourceYourConfig

  4. (在servlet环境中-如您所愿)引入AbstractHttpSessionApplicationInitializer(在类路径中)引用YourConfig

    public class Initializer extends org.springframework.session.web.context.AbstractHttpSessionApplicationInitializer { // <1>
    
      public Initializer() {
        super(YourConfig.class); // <2>
      }
    }
    

如果你想安装手动DB模式或使用外部工具,SQL脚本位于弹簧session.jar(组织/ springframework的/会话/ JDBC /模式- !@@平台@@ SQL)文件或分别在源代码库


这些(application。)属性允许进一步定制:

# Session store type. [jdbc|redis|hazelcast|mongodb]
spring.session.store-type=jdbc
# Session timeout. If a duration suffix is not specified, seconds will be used.
server.servlet.session.timeout= 
# Database schema initialization mode. [alwys | never | embedded]
spring.session.jdbc.initialize-schema=always 
# Path to the SQL file to use to initialize the database schema.(see: https://github.com/spring-projects/spring-session/tree/master/spring-session-jdbc/src/main/resources/org/springframework/session/jdbc)
spring.session.jdbc.schema=classpath:org/springframework/session/jdbc/schema-@@platform@@.sql
# custom spring session table name (see : https://github.com/spring-projects/spring-session/issues/1230) 
spring.session.jdbc.table-name=SPRING_SESSION

  • 在jar /源代码分发中,您还将找到“清理”(-drop)脚本
  • 当前提供的平台是:

    db2
    derby
    h2
    hsqldb
    mysql
    oracle
    postgresql
    sqlite
    sqlserver
    sybase
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

NetCore 3.1将IdentityServer4与现有数据库和Users表一起使用

如何将Spring Websocket与Spring Session自定义HttpSession一起使用,而没有Stomp / SockJS?

将ViewModel与SQLite数据库而不是Room数据库一起使用

将JDBC连接池与嵌入式数据库一起使用是否有好处?

将 $_SESSION 传递给数据库

将Spring-Session集群与Hazelcast一起使用时,ViewScoped Bean出现意外行为

将HttpContext.Session与use.Session()一起使用时,System.InvalidOperationException 组

如何将Spring Boot与MySQL数据库和JPA一起使用?

在没有警告的情况下将session_start()与AJAX一起使用

将Hystrix与Spring数据存储库一起使用

如何将Auth0与现有的ASP.NET Core Identity数据库一起使用?

将recyclerview与数据库一起使用

将 arrayList 与数据库一起使用?

将MSChart与Access数据库一起使用

将 RecyclerView 与数据库一起使用

使用Spring Security + Spring Session将身份验证设置为true

将NetBeans IDE的数据库管理器与UCanAccess JDBC驱动程序一起使用

将Hibernate用于现有数据库

将现有数据库用于SSRS

带有JDBC的Spring Session插入失败

使用数据库优先方法EF将新表添加到现有数据库

将 Stripe 中的 Checkout 与 NodeJS (Express) 中的现有数据库结合使用

将外键约束与现有表一起添加到Visual Studio数据库项目中的数据

使用Redis的Spring Session-server.session.timeout无效

mongorestore 无法将现有数据库复制/克隆到新数据库

如何使用 sql server 2008 R2 将数据库从现有数据库复制到新数据库 sql 脚本?

Spring Session / Redis和Oauth2无法一起使用

Shiny R:将输出与来自CSV的现有数据一起绘制到散点图上

SqlDependency无法与现有数据库一起使用