- Java 21
- Maven 3.8 or higher
- Spring Boot 3.x
docker run --name redis-session -p 6379:6379 redisdocker run -d \
--name spring-session-postgres \
-e POSTGRES_DB=session_db \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=password \
-p 5432:5432 \
postgres:16docker run -it --rm \
--network host \
postgres:16 \
psql -h localhost -U postgres -d session_dbCREATE DATABASE session_db
WITH
OWNER = postgres
TEMPLATE = postgres
ENCODING = 'UTF-8'
LC_COLLATE = 'C'
LC_CTYPE = 'C'
TABLESPACE = pg_default
CONNECTION LIMIT = -1
IS_TEMPLATE = False;DROP TABLE IF EXISTS SPRING_SESSION_ATTRIBUTES;
DROP TABLE IF EXISTS SPRING_SESSION;
CREATE TABLE IF NOT EXISTS 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)
);
CREATE UNIQUE INDEX IF NOT EXISTS SPRING_SESSION_IX1 ON SPRING_SESSION (SESSION_ID);
CREATE INDEX IF NOT EXISTS SPRING_SESSION_IX2 ON SPRING_SESSION (EXPIRY_TIME);
CREATE INDEX IF NOT EXISTS SPRING_SESSION_IX3 ON SPRING_SESSION (PRINCIPAL_NAME);
CREATE TABLE IF NOT EXISTS SPRING_SESSION_ATTRIBUTES (
SESSION_PRIMARY_ID CHAR(36) NOT NULL,
ATTRIBUTE_NAME VARCHAR(200) NOT NULL,
ATTRIBUTE_BYTES BYTEA 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
);docker logs spring-session-postgresmvn clean install -Dspring.profiles.active=testmvn compile
mvn clean install
mvn test
mvn -Dtest=TestClassName test
mvn -Dtest=TestClassName1,TestClassName2,TestClassName3#testMethodName test
mvn -Dtest=TestClassName#testMethodName test
mvn -DskipCompile=true -Dtest=TestClassName#testMethodName test
or
mvn -Dtest=TestClassName#testMethodName surefire:test
mvn package
mvn spring-boot:run