Spring Session table-name 属性不改变表名

2024-02-14

我必须能够重命名默认的 Spring Session 表,并在春季会议文档 https://docs.spring.io/spring-session/docs/2.0.1.RELEASE/reference/html5/#httpsession-jdbc-boot-spring-configuration.

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 的内容,它是以下内容的修改/重命名版本架构-oracle.sql https://github.com/spring-projects/spring-session/blob/master/spring-session-jdbc/src/main/resources/org/springframework/session/jdbc/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


原因spring.session.*不适合你是因为你正在使用@EnableJdbcHttpSession。这意味着您正在显式配置 Spring Session,因此 Spring Boot 会放弃其自动配置。

你应该删除@EnableJdbcHttpSession并确保 Spring Boot 自动配置 Spring Session。此外,您还可以离开spring.session.store-type因为 Spring Boot 应该能够推断出您正在使用哪个会话存储库实现,只要您只有SessionRepository类路径上的实现(即您只依赖于spring-session-jdbc并且没有其他 Spring Session 模块)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Session table-name 属性不改变表名 的相关文章

随机推荐