From a5e9b0daeccff77da4a7b4dddbd2a58ebb5890e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=98=E7=BB=AA=E5=A3=AE?= <2235602974@qq.com> Date: Tue, 31 Jan 2023 21:32:31 +0800 Subject: [PATCH] =?UTF-8?q?:recycle:=20Refactor=20code.=E5=8E=BB=E9=99=A4?= =?UTF-8?q?=E4=B8=91=E9=99=8B=E7=9A=84@Autowired(required=20=3D=20false)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...DefaultDeletedKeyEventMessageListener.java | 14 ++++++---- ...DefaultExpiredKeyEventMessageListener.java | 16 ++++++----- .../DefaultSetKeyEventMessageListener.java | 14 ++++++---- .../redis/RedisKeyEventAutoConfiguration.java | 28 +++++++++++-------- 4 files changed, 43 insertions(+), 29 deletions(-) diff --git a/ballcat-common/ballcat-common-redis/src/main/java/com/hccake/ballcat/common/redis/keyevent/listener/DefaultDeletedKeyEventMessageListener.java b/ballcat-common/ballcat-common-redis/src/main/java/com/hccake/ballcat/common/redis/keyevent/listener/DefaultDeletedKeyEventMessageListener.java index 0cedaab2..7e2f129c 100644 --- a/ballcat-common/ballcat-common-redis/src/main/java/com/hccake/ballcat/common/redis/keyevent/listener/DefaultDeletedKeyEventMessageListener.java +++ b/ballcat-common/ballcat-common-redis/src/main/java/com/hccake/ballcat/common/redis/keyevent/listener/DefaultDeletedKeyEventMessageListener.java @@ -2,13 +2,13 @@ package com.hccake.ballcat.common.redis.keyevent.listener; import com.hccake.ballcat.common.redis.keyevent.template.KeyDeletedEventMessageTemplate; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.ObjectProvider; import org.springframework.data.redis.connection.Message; import org.springframework.data.redis.connection.MessageListener; import org.springframework.data.redis.listener.RedisMessageListenerContainer; -import org.springframework.lang.Nullable; import org.springframework.util.CollectionUtils; +import java.util.ArrayList; import java.util.List; /** @@ -20,19 +20,23 @@ import java.util.List; @Slf4j public class DefaultDeletedKeyEventMessageListener extends AbstractDeletedKeyEventMessageListener { - @SuppressWarnings("all") - @Autowired(required = false) - @Nullable protected List keyDeletedEventMessageTemplates; /** * Creates new {@link MessageListener} for specific messages. + * * @param listenerContainer must not be {@literal null}. */ public DefaultDeletedKeyEventMessageListener(RedisMessageListenerContainer listenerContainer) { super(listenerContainer); } + public DefaultDeletedKeyEventMessageListener(RedisMessageListenerContainer listenerContainer, + ObjectProvider> objectProvider) { + super(listenerContainer); + objectProvider.ifAvailable(templates -> this.keyDeletedEventMessageTemplates = new ArrayList<>(templates)); + } + @Override public void onMessage(Message message, byte[] pattern) { if (CollectionUtils.isEmpty(keyDeletedEventMessageTemplates)) { diff --git a/ballcat-common/ballcat-common-redis/src/main/java/com/hccake/ballcat/common/redis/keyevent/listener/DefaultExpiredKeyEventMessageListener.java b/ballcat-common/ballcat-common-redis/src/main/java/com/hccake/ballcat/common/redis/keyevent/listener/DefaultExpiredKeyEventMessageListener.java index 86e61a9b..8d5dd540 100644 --- a/ballcat-common/ballcat-common-redis/src/main/java/com/hccake/ballcat/common/redis/keyevent/listener/DefaultExpiredKeyEventMessageListener.java +++ b/ballcat-common/ballcat-common-redis/src/main/java/com/hccake/ballcat/common/redis/keyevent/listener/DefaultExpiredKeyEventMessageListener.java @@ -2,13 +2,13 @@ package com.hccake.ballcat.common.redis.keyevent.listener; import com.hccake.ballcat.common.redis.keyevent.template.KeyExpiredEventMessageTemplate; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.ObjectProvider; import org.springframework.data.redis.connection.Message; import org.springframework.data.redis.connection.MessageListener; import org.springframework.data.redis.listener.RedisMessageListenerContainer; -import org.springframework.lang.Nullable; import org.springframework.util.CollectionUtils; +import java.util.ArrayList; import java.util.List; /** @@ -20,19 +20,22 @@ import java.util.List; @Slf4j public class DefaultExpiredKeyEventMessageListener extends AbstractExpiredKeyEventMessageListener { - @SuppressWarnings("all") - @Autowired(required = false) - @Nullable protected List keyExpiredEventMessageTemplates; /** * Creates new {@link MessageListener} for specific messages. + * * @param listenerContainer must not be {@literal null}. */ public DefaultExpiredKeyEventMessageListener(RedisMessageListenerContainer listenerContainer) { super(listenerContainer); } + public DefaultExpiredKeyEventMessageListener(RedisMessageListenerContainer listenerContainer, ObjectProvider> objectProvider) { + super(listenerContainer); + objectProvider.ifAvailable(templates -> this.keyExpiredEventMessageTemplates = new ArrayList<>(templates)); + } + @Override public void onMessage(Message message, byte[] pattern) { if (CollectionUtils.isEmpty(keyExpiredEventMessageTemplates)) { @@ -44,8 +47,7 @@ public class DefaultExpiredKeyEventMessageListener extends AbstractExpiredKeyEve for (KeyExpiredEventMessageTemplate keyExpiredEventMessageTemplate : keyExpiredEventMessageTemplates) { if (keyExpiredEventMessageTemplate.support(expiredKey)) { if (log.isTraceEnabled()) { - log.trace("use template[{}]handle key expired event,the expired key is [{}]", - keyExpiredEventMessageTemplate.getClass().getName(), expiredKey); + log.trace("use template[{}]handle key expired event,the expired key is [{}]", keyExpiredEventMessageTemplate.getClass().getName(), expiredKey); } keyExpiredEventMessageTemplate.handleMessage(expiredKey); } diff --git a/ballcat-common/ballcat-common-redis/src/main/java/com/hccake/ballcat/common/redis/keyevent/listener/DefaultSetKeyEventMessageListener.java b/ballcat-common/ballcat-common-redis/src/main/java/com/hccake/ballcat/common/redis/keyevent/listener/DefaultSetKeyEventMessageListener.java index b16cffe3..e8be0963 100644 --- a/ballcat-common/ballcat-common-redis/src/main/java/com/hccake/ballcat/common/redis/keyevent/listener/DefaultSetKeyEventMessageListener.java +++ b/ballcat-common/ballcat-common-redis/src/main/java/com/hccake/ballcat/common/redis/keyevent/listener/DefaultSetKeyEventMessageListener.java @@ -2,13 +2,13 @@ package com.hccake.ballcat.common.redis.keyevent.listener; import com.hccake.ballcat.common.redis.keyevent.template.KeySetEventMessageTemplate; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.ObjectProvider; import org.springframework.data.redis.connection.Message; import org.springframework.data.redis.connection.MessageListener; import org.springframework.data.redis.listener.RedisMessageListenerContainer; -import org.springframework.lang.Nullable; import org.springframework.util.CollectionUtils; +import java.util.ArrayList; import java.util.List; /** @@ -20,19 +20,23 @@ import java.util.List; @Slf4j public class DefaultSetKeyEventMessageListener extends AbstractSetKeyEventMessageListener { - @SuppressWarnings("all") - @Autowired(required = false) - @Nullable protected List keySetEventMessageTemplates; /** * Creates new {@link MessageListener} for specific messages. + * * @param listenerContainer must not be {@literal null}. */ public DefaultSetKeyEventMessageListener(RedisMessageListenerContainer listenerContainer) { super(listenerContainer); } + public DefaultSetKeyEventMessageListener(RedisMessageListenerContainer listenerContainer, + ObjectProvider> objectProvider) { + super(listenerContainer); + objectProvider.ifAvailable(templates -> this.keySetEventMessageTemplates = new ArrayList<>(templates)); + } + @Override public void onMessage(Message message, byte[] pattern) { if (CollectionUtils.isEmpty(keySetEventMessageTemplates)) { diff --git a/ballcat-starters/ballcat-spring-boot-starter-redis/src/main/java/com/hccake/ballcat/autoconfigure/redis/RedisKeyEventAutoConfiguration.java b/ballcat-starters/ballcat-spring-boot-starter-redis/src/main/java/com/hccake/ballcat/autoconfigure/redis/RedisKeyEventAutoConfiguration.java index 0bab7890..242deab5 100644 --- a/ballcat-starters/ballcat-spring-boot-starter-redis/src/main/java/com/hccake/ballcat/autoconfigure/redis/RedisKeyEventAutoConfiguration.java +++ b/ballcat-starters/ballcat-spring-boot-starter-redis/src/main/java/com/hccake/ballcat/autoconfigure/redis/RedisKeyEventAutoConfiguration.java @@ -1,12 +1,11 @@ package com.hccake.ballcat.autoconfigure.redis; import com.hccake.ballcat.common.redis.config.CacheProperties; -import com.hccake.ballcat.common.redis.keyevent.listener.DefaultDeletedKeyEventMessageListener; -import com.hccake.ballcat.common.redis.keyevent.listener.DefaultExpiredKeyEventMessageListener; -import com.hccake.ballcat.common.redis.keyevent.listener.DefaultSetKeyEventMessageListener; -import com.hccake.ballcat.common.redis.keyevent.listener.AbstractDeletedKeyEventMessageListener; -import com.hccake.ballcat.common.redis.keyevent.listener.AbstractExpiredKeyEventMessageListener; -import com.hccake.ballcat.common.redis.keyevent.listener.AbstractSetKeyEventMessageListener; +import com.hccake.ballcat.common.redis.keyevent.listener.*; +import com.hccake.ballcat.common.redis.keyevent.template.KeyDeletedEventMessageTemplate; +import com.hccake.ballcat.common.redis.keyevent.template.KeyExpiredEventMessageTemplate; +import com.hccake.ballcat.common.redis.keyevent.template.KeySetEventMessageTemplate; +import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; @@ -15,6 +14,8 @@ import org.springframework.context.annotation.Bean; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.listener.RedisMessageListenerContainer; +import java.util.List; + /** * redis key event auto configuration * @@ -56,8 +57,9 @@ public class RedisKeyEventAutoConfiguration { @Bean(name = LISTENER_NAME) @ConditionalOnMissingBean(name = LISTENER_NAME) public AbstractDeletedKeyEventMessageListener keyDeletedEventMessageListener( - @Qualifier(value = CONTAINER_NAME) RedisMessageListenerContainer listenerContainer) { - return new DefaultDeletedKeyEventMessageListener(listenerContainer); + @Qualifier(value = CONTAINER_NAME) RedisMessageListenerContainer listenerContainer, + ObjectProvider> objectProvider) { + return new DefaultDeletedKeyEventMessageListener(listenerContainer, objectProvider); } } @@ -80,8 +82,9 @@ public class RedisKeyEventAutoConfiguration { @Bean(name = LISTENER_NAME) @ConditionalOnMissingBean(name = LISTENER_NAME) public AbstractSetKeyEventMessageListener keySetEventMessageListener( - @Qualifier(value = CONTAINER_NAME) RedisMessageListenerContainer listenerContainer) { - return new DefaultSetKeyEventMessageListener(listenerContainer); + @Qualifier(value = CONTAINER_NAME) RedisMessageListenerContainer listenerContainer, + ObjectProvider> objectProvider) { + return new DefaultSetKeyEventMessageListener(listenerContainer, objectProvider); } } @@ -104,8 +107,9 @@ public class RedisKeyEventAutoConfiguration { @Bean(name = LISTENER_NAME) @ConditionalOnMissingBean(name = LISTENER_NAME) public AbstractExpiredKeyEventMessageListener keyExpiredEventMessageListener( - @Qualifier(value = CONTAINER_NAME) RedisMessageListenerContainer listenerContainer) { - return new DefaultExpiredKeyEventMessageListener(listenerContainer); + @Qualifier(value = CONTAINER_NAME) RedisMessageListenerContainer listenerContainer, + ObjectProvider> objectProvider) { + return new DefaultExpiredKeyEventMessageListener(listenerContainer, objectProvider); } } -- Gitee