Skip to content

Commit 3efead4

Browse files
committed
Merge pull request spring-projects#17797 from vpavic
* pr/17797: Harmonize Spring Session flush mode properties javadoc Add support for configuring Spring Session JDBC flush mode Closes spring-projectsgh-17797
2 parents 71cf0a3 + 85a289f commit 3efead4

File tree

5 files changed

+34
-2
lines changed

5 files changed

+34
-2
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/HazelcastSessionProperties.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ public class HazelcastSessionProperties {
3535
private String mapName = "spring:session:sessions";
3636

3737
/**
38-
* Sessions flush mode.
38+
* Sessions flush mode. Determines when session changes are written to the session
39+
* store.
3940
*/
4041
private FlushMode flushMode = FlushMode.ON_SAVE;
4142

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/JdbcSessionConfiguration.java

+1
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ void customize(SessionProperties sessionProperties, JdbcSessionProperties jdbcSe
6767
}
6868
setTableName(jdbcSessionProperties.getTableName());
6969
setCleanupCron(jdbcSessionProperties.getCleanupCron());
70+
setFlushMode(jdbcSessionProperties.getFlushMode());
7071
setSaveMode(jdbcSessionProperties.getSaveMode());
7172
}
7273

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/JdbcSessionProperties.java

+15
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import org.springframework.boot.context.properties.ConfigurationProperties;
2020
import org.springframework.boot.jdbc.DataSourceInitializationMode;
21+
import org.springframework.session.FlushMode;
2122
import org.springframework.session.SaveMode;
2223

2324
/**
@@ -56,6 +57,12 @@ public class JdbcSessionProperties {
5657
*/
5758
private DataSourceInitializationMode initializeSchema = DataSourceInitializationMode.EMBEDDED;
5859

60+
/**
61+
* Sessions flush mode. Determines when session changes are written to the session
62+
* store.
63+
*/
64+
private FlushMode flushMode = FlushMode.ON_SAVE;
65+
5966
/**
6067
* Sessions save mode. Determines how session changes are tracked and saved to the
6168
* session store.
@@ -94,6 +101,14 @@ public void setInitializeSchema(DataSourceInitializationMode initializeSchema) {
94101
this.initializeSchema = initializeSchema;
95102
}
96103

104+
public FlushMode getFlushMode() {
105+
return this.flushMode;
106+
}
107+
108+
public void setFlushMode(FlushMode flushMode) {
109+
this.flushMode = flushMode;
110+
}
111+
97112
public SaveMode getSaveMode() {
98113
return this.saveMode;
99114
}

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/RedisSessionProperties.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ public class RedisSessionProperties {
3737
private String namespace = "spring:session";
3838

3939
/**
40-
* Sessions flush mode.
40+
* Sessions flush mode. Determines when session changes are written to the session
41+
* store.
4142
*/
4243
private FlushMode flushMode = FlushMode.ON_SAVE;
4344

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/SessionAutoConfigurationJdbcTests.java

+14
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.springframework.boot.web.servlet.FilterRegistrationBean;
3131
import org.springframework.jdbc.BadSqlGrammarException;
3232
import org.springframework.jdbc.core.JdbcOperations;
33+
import org.springframework.session.FlushMode;
3334
import org.springframework.session.SaveMode;
3435
import org.springframework.session.data.mongo.MongoOperationsSessionRepository;
3536
import org.springframework.session.data.redis.RedisOperationsSessionRepository;
@@ -130,6 +131,19 @@ void customCleanupCron() {
130131
});
131132
}
132133

134+
@Test
135+
void customFlushMode() {
136+
this.contextRunner
137+
.withPropertyValues("spring.session.store-type=jdbc", "spring.session.jdbc.flush-mode=immediate")
138+
.run((context) -> {
139+
assertThat(context.getBean(JdbcSessionProperties.class).getFlushMode())
140+
.isEqualTo(FlushMode.IMMEDIATE);
141+
SpringBootJdbcHttpSessionConfiguration configuration = context
142+
.getBean(SpringBootJdbcHttpSessionConfiguration.class);
143+
assertThat(configuration).hasFieldOrPropertyWithValue("flushMode", FlushMode.IMMEDIATE);
144+
});
145+
}
146+
133147
@Test
134148
void customSaveMode() {
135149
this.contextRunner

0 commit comments

Comments
 (0)