Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
919913ae
Commit
919913ae
authored
Jun 13, 2019
by
Phillip Webb
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Polish "Add session property for ConfigureRedisAction"
See gh-17022
parent
a0fabc98
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
35 additions
and
34 deletions
+35
-34
RedisSessionConfiguration.java
...boot/autoconfigure/session/RedisSessionConfiguration.java
+13
-14
RedisSessionProperties.java
...rk/boot/autoconfigure/session/RedisSessionProperties.java
+15
-13
SessionAutoConfigurationRedisTests.java
...configure/session/SessionAutoConfigurationRedisTests.java
+7
-7
No files found.
spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/RedisSessionConfiguration.java
View file @
919913ae
...
...
@@ -22,7 +22,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnBean
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnClass
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
;
import
org.springframework.boot.autoconfigure.session.RedisSessionProperties.ConfigurationStrategy
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Conditional
;
...
...
@@ -52,6 +51,19 @@ import org.springframework.session.data.redis.config.annotation.web.http.RedisHt
@EnableConfigurationProperties
(
RedisSessionProperties
.
class
)
class
RedisSessionConfiguration
{
@Bean
@ConditionalOnMissingBean
public
ConfigureRedisAction
configureRedisAction
(
RedisSessionProperties
redisSessionProperties
)
{
switch
(
redisSessionProperties
.
getConfigurationStrategy
())
{
case
NOTIFY_KEYSPACE_EVENTS:
return
new
ConfigureNotifyKeyspaceEventsAction
();
case
NONE:
return
ConfigureRedisAction
.
NO_OP
;
}
throw
new
IllegalStateException
(
"Unsupported redis configuration strategy '"
+
redisSessionProperties
.
getConfigurationStrategy
()
+
"'."
);
}
@Configuration
public
static
class
SpringBootRedisHttpSessionConfiguration
extends
RedisHttpSessionConfiguration
{
...
...
@@ -66,19 +78,6 @@ class RedisSessionConfiguration {
setCleanupCron
(
redisSessionProperties
.
getCleanupCron
());
}
@Bean
@ConditionalOnMissingBean
public
ConfigureRedisAction
configureRedisAction
(
RedisSessionProperties
redisSessionProperties
)
{
ConfigurationStrategy
strategy
=
redisSessionProperties
.
getConfigurationStrategy
();
if
(
strategy
==
ConfigurationStrategy
.
NOTIFY_KEYSPACE_EVENTS
)
{
return
new
ConfigureNotifyKeyspaceEventsAction
();
}
if
(
strategy
==
ConfigurationStrategy
.
NO_OP
)
{
return
ConfigureRedisAction
.
NO_OP
;
}
throw
new
IllegalStateException
(
"Strategy '"
+
strategy
+
"' is not supported."
);
}
}
}
spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/RedisSessionProperties.java
View file @
919913ae
...
...
@@ -41,9 +41,10 @@ public class RedisSessionProperties {
private
RedisFlushMode
flushMode
=
RedisFlushMode
.
ON_SAVE
;
/**
* Allows specifying a strategy for configuring and validating Redis.
* The configure action to apply when no user defined ConfigureRedisAction bean is
* present.
*/
private
Configur
ationStrategy
configurationStrategy
=
ConfigurationStrategy
.
NOTIFY_KEYSPACE_EVENTS
;
private
Configur
eAction
configureAction
=
ConfigureAction
.
NOTIFY_KEYSPACE_EVENTS
;
/**
* Cron expression for expired session cleanup job.
...
...
@@ -74,28 +75,29 @@ public class RedisSessionProperties {
this
.
cleanupCron
=
cleanupCron
;
}
public
Configur
ationStrategy
getConfigurationStrategy
()
{
return
this
.
configur
ationStrategy
;
public
Configur
eAction
getConfigurationStrategy
()
{
return
this
.
configur
eAction
;
}
public
void
setConfigurationStrategy
(
Configur
ationStrategy
configurationStrategy
)
{
this
.
configur
ationStrategy
=
configurationStrategy
;
public
void
setConfigurationStrategy
(
Configur
eAction
configurationStrategy
)
{
this
.
configur
eAction
=
configurationStrategy
;
}
/**
*
Allows specifying a strategy
for configuring and validating Redis.
*
Strategies
for configuring and validating Redis.
*/
public
enum
Configur
ationStrategy
{
public
enum
Configur
eAction
{
/**
* Do nothing.
* Ensure that Redis Keyspace events for Generic commands and Expired events are
* enabled.
*/
NO_OP
,
NOTIFY_KEYSPACE_EVENTS
,
/**
* Ensures that Redis Keyspace events for Generic commands and Expired events are
* enabled.
* No not attempt to apply any custom Redis configuration.
*/
NO
TIFY_KEYSPACE_EVENTS
NO
NE
}
...
...
spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/SessionAutoConfigurationRedisTests.java
View file @
919913ae
...
...
@@ -91,8 +91,7 @@ class SessionAutoConfigurationRedisTests extends AbstractSessionAutoConfiguratio
@Test
void
redisSessionConfigureNoStrategy
()
{
this
.
contextRunner
.
withConfiguration
(
AutoConfigurations
.
of
(
RedisAutoConfiguration
.
class
))
.
withPropertyValues
(
"spring.session.store-type=redis"
,
"spring.session.redis.configuration-strategy=no_op"
,
.
withPropertyValues
(
"spring.session.store-type=redis"
,
"spring.session.redis.configure-action=none"
,
"spring.redis.port="
+
redis
.
getFirstMappedPort
())
.
run
(
validateStrategy
(
ConfigureRedisAction
.
NO_OP
.
getClass
()));
}
...
...
@@ -130,13 +129,14 @@ class SessionAutoConfigurationRedisTests extends AbstractSessionAutoConfiguratio
}
private
ContextConsumer
<
AssertableWebApplicationContext
>
validateStrategy
(
Class
<?
extends
ConfigureRedisAction
>
actionClass
,
Map
.
Entry
...
values
)
{
Class
<?
extends
ConfigureRedisAction
>
expectedConfigureRedisActionType
,
Map
.
Entry
<?,
?>...
expectedConfig
)
{
return
(
context
)
->
{
assertThat
(
context
).
hasSingleBean
(
ConfigureRedisAction
.
class
).
hasSingleBean
(
RedisConnectionFactory
.
class
);
assertThat
(
context
.
getBean
(
ConfigureRedisAction
.
class
)).
isInstanceOf
(
actionClass
);
assertThat
(
context
).
hasSingleBean
(
ConfigureRedisAction
.
class
);
assertThat
(
context
).
hasSingleBean
(
RedisConnectionFactory
.
class
);
assertThat
(
context
.
getBean
(
ConfigureRedisAction
.
class
)).
isInstanceOf
(
expectedConfigureRedisActionType
);
RedisConnection
connection
=
context
.
getBean
(
RedisConnectionFactory
.
class
).
getConnection
();
if
(
values
.
length
>
0
)
{
assertThat
(
connection
.
getConfig
(
"*"
)).
contains
(
values
);
if
(
expectedConfig
.
length
>
0
)
{
assertThat
(
connection
.
getConfig
(
"*"
)).
contains
(
expectedConfig
);
}
};
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment