我的应用程序在没有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集成?
据我了解spring-session javaconfig-jdbc sample / doc,您“只是”需要:
用注释“您的配置类”(YourConfig
)org.springframework.session.jdbc.config.annotation.web.http.EnableJdbcHttpSession
。
命名您的DataSource
“数据源”。(完成!;)
提供一个PlatformTransactionManager
豆,立足dataSource
在YourConfig
。
(在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
当前提供的平台是:
db2
derby
h2
hsqldb
mysql
oracle
postgresql
sqlite
sqlserver
sybase
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句