在系統(tǒng)開發(fā)或測試的時(shí)候, 修改代碼,系統(tǒng)重啟后會,剛登陸的用戶的session就沒有了,又得重新登陸測試系統(tǒng),這樣就很麻煩,
然后網(wǎng)上大部份方案是redis 或用spring session 等要改的東西有點(diǎn)多.因?yàn)轫?xiàng)目一般都有數(shù)據(jù)庫,能不能就存在數(shù)據(jù)庫里.系統(tǒng)重啟自動(dòng)從數(shù)據(jù)庫加載session.
果然有這類方案具體
https://www.cnblogs.com/davidwang456/p/10361550.html
在原有項(xiàng)目上做了四個(gè)變動(dòng)
1 gradle文件上添加 compile('org.springframework.session:spring-session-jdbc')
2 CREATE TABLE SPRING_SESSION (
PRIMARY_ID CHAR(36) NOT NULL,
SESSION_ID CHAR(36) NOT NULL,
CREATION_TIME BIGINT NOT NULL,
LAST_ACCESS_TIME BIGINT NOT NULL,
MAX_INACTIVE_INTERVAL INT NOT NULL,
EXPIRY_TIME BIGINT NOT NULL,
PRINCIPAL_NAME VARCHAR(100),
CONSTRAINT SPRING_SESSION_PK PRIMARY KEY (PRIMARY_ID)
) ENGINE=INNODB ROW_FORMAT=DYNAMIC;
CREATE UNIQUE INDEX SPRING_SESSION_IX1 ON SPRING_SESSION (SESSION_ID);
CREATE INDEX SPRING_SESSION_IX2 ON SPRING_SESSION (EXPIRY_TIME);
CREATE INDEX SPRING_SESSION_IX3 ON SPRING_SESSION (PRINCIPAL_NAME);
CREATE TABLE SPRING_SESSION_ATTRIBUTES (
SESSION_PRIMARY_ID CHAR(36) NOT NULL,
ATTRIBUTE_NAME VARCHAR(200) NOT NULL,
ATTRIBUTE_BYTES BLOB NOT NULL,
CONSTRAINT SPRING_SESSION_ATTRIBUTES_PK PRIMARY KEY (SESSION_PRIMARY_ID, ATTRIBUTE_NAME),
CONSTRAINT SPRING_SESSION_ATTRIBUTES_FK FOREIGN KEY (SESSION_PRIMARY_ID) REFERENCES SPRING_SESSION(PRIMARY_ID) ON DELETE CASCADE
) ENGINE=INNODB ROW_FORMAT=DYNAMIC;
3 修改yml文件 session:
store-type:JDBC
4自己的用戶類繼承 java.io.Serializable接口
這樣重新部署也不會丟失用戶的session不需要重新登錄.