Spring Session table-name属性不会更改表名称

时间:2018-08-08 16:46:16

标签: spring oracle spring-boot spring-jdbc spring-session

我必须能够重命名默认的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

2 个答案:

答案 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")