From d11988be036f12bdec251fb706a84f45b08b999d Mon Sep 17 00:00:00 2001 From: Plamen Totev Date: Sun, 19 Nov 2023 20:05:23 +0200 Subject: [PATCH] Use ObjectProvider instead of @Lazy Spring AOT (used to help Java native build) does not recognize proxies created by proxy. Use ObjectProvider instead. It is recommended anyway (even if no Java native build is used). See https://github.com/spring-projects/spring-framework/issues/29584 --- .../carboncritters/service/ProfileService.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/backend/src/main/java/mosquitobytes/carboncritters/service/ProfileService.java b/backend/src/main/java/mosquitobytes/carboncritters/service/ProfileService.java index b725a8e..c98af31 100644 --- a/backend/src/main/java/mosquitobytes/carboncritters/service/ProfileService.java +++ b/backend/src/main/java/mosquitobytes/carboncritters/service/ProfileService.java @@ -6,7 +6,8 @@ import mosquitobytes.carboncritters.model.Profile; import mosquitobytes.carboncritters.model.Score; import mosquitobytes.carboncritters.repository.ProfileRepository; -import org.springframework.context.annotation.Lazy; + +import org.springframework.beans.factory.ObjectProvider; import org.springframework.stereotype.Service; import java.io.IOException; @@ -15,12 +16,12 @@ @Service public class ProfileService { - private final CustomWebSocketHandler webSocketHandler; + private final ObjectProvider webSocketHandlerProvider; private final ProfileRepository profileRepository; - public ProfileService(@Lazy CustomWebSocketHandler webSocketHandler, ProfileRepository profileRepository) { - this.webSocketHandler = webSocketHandler; + public ProfileService(ObjectProvider webSocketHandlerProvider, ProfileRepository profileRepository) { + this.webSocketHandlerProvider = webSocketHandlerProvider; this.profileRepository = profileRepository; } @@ -53,6 +54,7 @@ public void resetScore() { profiles.forEach(this::resetScore); try { + var webSocketHandler = webSocketHandlerProvider.getIfAvailable(); webSocketHandler.sendLeaderBoardToAllActiveSessions(); } catch (IOException e) { throw new RuntimeException(e);