From 1c3c5a905fe1310a2a29497a29767c289136929d Mon Sep 17 00:00:00 2001 From: Mahhia Mim Date: Fri, 27 Mar 2026 22:21:04 +0600 Subject: [PATCH 1/2] fix: remove conditional bean blocking admin bootstrap --- .../inventorymanagement/InventoryManagementApplication.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/example/inventorymanagement/InventoryManagementApplication.java b/src/main/java/com/example/inventorymanagement/InventoryManagementApplication.java index 6794384..1f0f12b 100644 --- a/src/main/java/com/example/inventorymanagement/InventoryManagementApplication.java +++ b/src/main/java/com/example/inventorymanagement/InventoryManagementApplication.java @@ -19,7 +19,6 @@ public static void main(String[] args) { } @Bean - @ConditionalOnBean(UserRepository.class) public CommandLineRunner initAdmin(UserRepository userRepository, PasswordEncoder passwordEncoder, Environment environment) { From 44e7a7434bcd27c10e5ea236fbe44329f99fc09d Mon Sep 17 00:00:00 2001 From: Mahhia Mim Date: Fri, 27 Mar 2026 22:40:05 +0600 Subject: [PATCH 2/2] test error resolved --- .../InventoryManagementApplication.java | 18 +++++++++++++++--- .../AdminBootstrapRunnerIntegrationTest.java | 7 ++++--- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/example/inventorymanagement/InventoryManagementApplication.java b/src/main/java/com/example/inventorymanagement/InventoryManagementApplication.java index 1f0f12b..423eaaf 100644 --- a/src/main/java/com/example/inventorymanagement/InventoryManagementApplication.java +++ b/src/main/java/com/example/inventorymanagement/InventoryManagementApplication.java @@ -2,12 +2,12 @@ import com.example.inventorymanagement.entity.Users; import com.example.inventorymanagement.repository.UserRepository; -import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import org.springframework.core.env.Environment; +import org.springframework.beans.factory.ObjectProvider; import org.springframework.security.crypto.password.PasswordEncoder; @SpringBootApplication @@ -19,10 +19,22 @@ public static void main(String[] args) { } @Bean - public CommandLineRunner initAdmin(UserRepository userRepository, - PasswordEncoder passwordEncoder, + public CommandLineRunner initAdmin(ObjectProvider userRepositoryProvider, + ObjectProvider passwordEncoderProvider, Environment environment) { return args -> { + UserRepository userRepository = userRepositoryProvider.getIfAvailable(); + if (userRepository == null) { + // In sliced tests (e.g., @WebMvcTest), repository beans are not loaded. + return; + } + + PasswordEncoder passwordEncoder = passwordEncoderProvider.getIfAvailable(); + if (passwordEncoder == null) { + // In some test slices, security beans are not loaded. + return; + } + String adminUsernameEnv = environment.getProperty("ADMIN_USERNAME"); String adminUsername = (adminUsernameEnv == null || adminUsernameEnv.isBlank()) ? "admin" diff --git a/src/test/java/com/example/inventorymanagement/AdminBootstrapRunnerIntegrationTest.java b/src/test/java/com/example/inventorymanagement/AdminBootstrapRunnerIntegrationTest.java index 167f805..5156e2d 100644 --- a/src/test/java/com/example/inventorymanagement/AdminBootstrapRunnerIntegrationTest.java +++ b/src/test/java/com/example/inventorymanagement/AdminBootstrapRunnerIntegrationTest.java @@ -7,6 +7,7 @@ import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.beans.factory.ObjectProvider; import org.springframework.core.env.Environment; import org.springframework.security.crypto.password.PasswordEncoder; @@ -88,10 +89,10 @@ void missingOrBlankPasswordSkipsSafely() { @Configuration static class RunnerConfig { @Bean - CommandLineRunner testCommandLineRunner(UserRepository userRepository, - PasswordEncoder passwordEncoder, + CommandLineRunner testCommandLineRunner(ObjectProvider userRepositoryProvider, + ObjectProvider passwordEncoderProvider, Environment environment) { - return new InventoryManagementApplication().initAdmin(userRepository, passwordEncoder, environment); + return new InventoryManagementApplication().initAdmin(userRepositoryProvider, passwordEncoderProvider, environment); } } }