我必须能够重命名默认的Spring Session表,并在spring session documentation中找到以下配置选项。
spring.session.jdbc.schema = classpath:org / springframework / session / jdbc / schema-@@ platform @@。sql#用于初始化数据库模式的SQL文件的路径。 spring.session.jdbc.table-name = SPRING_SESSION#用于存储会话的数据库表的名称。
这是我要在application.properties中设置的内容:
spring.session.store-type=jdbc
spring.session.jdbc.table-name: APP_SPR_SESSION
spring.session.jdbc.schema: src/main/resources/appSpringSession.sql
以下是appSpringSession.sql的内容,它是schema-oracle.sql的修改/重命名版本
CREATE TABLE app_app.APP_SPR_SESSION (
PRIMARY_ID CHAR(36) NOT NULL,
SESSION_ID CHAR(36) NOT NULL,
CREATION_TIME NUMBER(19,0) NOT NULL,
LAST_ACCESS_TIME NUMBER(19,0) NOT NULL,
MAX_INACTIVE_INTERVAL NUMBER(10,0) NOT NULL,
EXPIRY_TIME NUMBER(19,0) NOT NULL,
PRINCIPAL_NAME VARCHAR2(100 CHAR),
CONSTRAINT APP_SPR_SESSION_PK PRIMARY KEY (PRIMARY_ID)
);
CREATE UNIQUE INDEX APP_SPR_SESSION_IX1 ON APP_SPR_SESSION (SESSION_ID);
CREATE INDEX APP_SPR_SESSION_IX2 ON APP_SPR_SESSION (EXPIRY_TIME);
CREATE INDEX APP_SPR_SESSION_IX3 ON APP_SPR_SESSION (PRINCIPAL_NAME);
CREATE TABLE app_app.APP_SPR_SESSION_ATTRIBUTES (
SESSION_PRIMARY_ID CHAR(36) NOT NULL,
ATTRIBUTE_NAME VARCHAR2(200 CHAR) NOT NULL,
ATTRIBUTE_BYTES BLOB NOT NULL,
CONSTRAINT APP_SPR_SESSION_ATTRIBUTES_PK PRIMARY KEY
(SESSION_PRIMARY_ID,
ATTRIBUTE_NAME),
CONSTRAINT APP_SPR_SESSION_ATTRIBUTES_FK FOREIGN KEY
(SESSION_PRIMARY_ID)
REFERENCES APP_SPR_SESSION(PRIMARY_ID) ON DELETE CASCADE
);
我已使用上述ddl将表手动添加到Oracle数据库中,并且每次应用启动时,它仍在查找SPRING_SESSION表。 似乎指定这些选项无效。我在这里从文档中读错了什么?
我也正在使用Spring Session 2.0.2 Release和Spring Boot 2.0.1.RELEASE
答案 0 :(得分:0)
spring.session.*
对您不起作用的原因是因为您正在使用@EnableJdbcHttpSession
。这意味着您正在显式配置Spring Session,因此Spring Boot会自动配置它。
您应该删除@EnableJdbcHttpSession
并确保Spring Boot正在自动配置Spring Session。另外,您还可以省去spring.session.store-type
,因为只要在类路径上只有SessionRepository
实现,Spring Boot应该能够推断出您正在使用哪个会话存储库实现(即,您仅依赖于spring-session-jdbc
,没有其他Spring Session模块。
答案 1 :(得分:0)
您也可以使用 @EnableJdbcHttpSession(tableName = "APP_SPR_SESSION")