From 1e4ebb08a46b856e23fd738a34a3a4e6183d9ebd Mon Sep 17 00:00:00 2001 From: extio-de Date: Mon, 22 Dec 2025 19:54:55 +0100 Subject: [PATCH] feat(config): Add @ConditionalOnMissingBean annotation to service beans in configuration classes --- .../de/extio/game_engine/event/EventsAutoConfiguration.java | 2 ++ .../extio/game_engine/keyboard/KeycodeAutoConfiguration.java | 2 ++ .../game_engine/module/ModuleManagerAutoConfiguration.java | 2 ++ .../extio/game_engine/renderer/RendererAutoConfiguration.java | 3 ++- .../game_engine/storage/StorageServiceAutoConfiguration.java | 2 ++ 5 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/extio/game_engine/event/EventsAutoConfiguration.java b/src/main/java/de/extio/game_engine/event/EventsAutoConfiguration.java index 55808d0..7dca383 100644 --- a/src/main/java/de/extio/game_engine/event/EventsAutoConfiguration.java +++ b/src/main/java/de/extio/game_engine/event/EventsAutoConfiguration.java @@ -1,6 +1,7 @@ package de.extio.game_engine.event; import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; @@ -19,6 +20,7 @@ public class EventsAutoConfiguration { } @Bean + @ConditionalOnMissingBean EventService eventService(final EventHandlerRegistry registry, final EventExecutor executor) { final EventService eventService = new EventServiceImpl(registry, executor); return eventService; diff --git a/src/main/java/de/extio/game_engine/keyboard/KeycodeAutoConfiguration.java b/src/main/java/de/extio/game_engine/keyboard/KeycodeAutoConfiguration.java index 80f1d68..7a8d56d 100644 --- a/src/main/java/de/extio/game_engine/keyboard/KeycodeAutoConfiguration.java +++ b/src/main/java/de/extio/game_engine/keyboard/KeycodeAutoConfiguration.java @@ -1,6 +1,7 @@ package de.extio.game_engine.keyboard; import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; @@ -9,6 +10,7 @@ import org.springframework.context.annotation.Bean; public class KeycodeAutoConfiguration { @Bean + @ConditionalOnMissingBean KeycodeRegistry keycodeRegistry() { return new KeycodeRegistryImpl(); } diff --git a/src/main/java/de/extio/game_engine/module/ModuleManagerAutoConfiguration.java b/src/main/java/de/extio/game_engine/module/ModuleManagerAutoConfiguration.java index b89599e..1651874 100644 --- a/src/main/java/de/extio/game_engine/module/ModuleManagerAutoConfiguration.java +++ b/src/main/java/de/extio/game_engine/module/ModuleManagerAutoConfiguration.java @@ -3,6 +3,7 @@ package de.extio.game_engine.module; import java.util.List; import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; @@ -11,6 +12,7 @@ import org.springframework.context.annotation.Bean; public class ModuleManagerAutoConfiguration { @Bean + @ConditionalOnMissingBean ModuleManager moduleManager(final List initialModules) { return new ModuleManagerImpl(initialModules); } diff --git a/src/main/java/de/extio/game_engine/renderer/RendererAutoConfiguration.java b/src/main/java/de/extio/game_engine/renderer/RendererAutoConfiguration.java index 9bfc41a..d7cd659 100644 --- a/src/main/java/de/extio/game_engine/renderer/RendererAutoConfiguration.java +++ b/src/main/java/de/extio/game_engine/renderer/RendererAutoConfiguration.java @@ -7,11 +7,11 @@ import java.util.function.Consumer; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; -import de.extio.game_engine.event.EventService; import de.extio.game_engine.event.EventService; import de.extio.game_engine.keyboard.KeycodeRegistry; import de.extio.game_engine.renderer.model.RenderingBo; @@ -23,6 +23,7 @@ public class RendererAutoConfiguration { @SuppressWarnings("unchecked") @Bean + @ConditionalOnMissingBean RenderingBoPool renderingBoPool(final List renderingBoImplementations) { final Map, Class> mapping = new HashMap<>(); for (final var impl : renderingBoImplementations) { diff --git a/src/main/java/de/extio/game_engine/storage/StorageServiceAutoConfiguration.java b/src/main/java/de/extio/game_engine/storage/StorageServiceAutoConfiguration.java index eb01707..f800cfe 100644 --- a/src/main/java/de/extio/game_engine/storage/StorageServiceAutoConfiguration.java +++ b/src/main/java/de/extio/game_engine/storage/StorageServiceAutoConfiguration.java @@ -1,6 +1,7 @@ package de.extio.game_engine.storage; import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; @@ -9,6 +10,7 @@ import org.springframework.context.annotation.Bean; public class StorageServiceAutoConfiguration { @Bean + @ConditionalOnMissingBean StorageService storageService() { return new StorageServiceImpl(); }