Repository: jhipster/jhipster-lite
Pull request #12614 (2025-05-23 07:42:06)

Fix: bump spring-boot to 3.5.0 (apps)
Fix #12619 


Patch:
diff --git a/src/main/java/tech/jhipster/lite/generator/client/angular/security/oauth2keycloak/application/AngularOAuth2KeycloakApplicationService.java b/src/main/java/tech/jhipster/lite/generator/client/angular/security/oauth2/application/AngularOauth2ApplicationService.java
similarity index 59%
rename from src/main/java/tech/jhipster/lite/generator/client/angular/security/oauth2keycloak/application/AngularOAuth2KeycloakApplicationService.java
rename to src/main/java/tech/jhipster/lite/generator/client/angular/security/oauth2/application/AngularOauth2ApplicationService.java
index eaec22acf..c599069fe 100644
--- a/src/main/java/tech/jhipster/lite/generator/client/angular/security/oauth2keycloak/application/AngularOAuth2KeycloakApplicationService.java
+++ b/src/main/java/tech/jhipster/lite/generator/client/angular/security/oauth2/application/AngularOauth2ApplicationService.java
@@ -1,17 +1,17 @@
-package tech.jhipster.lite.generator.client.angular.security.oauth2keycloak.application;
+package tech.jhipster.lite.generator.client.angular.security.oauth2.application;
 
 import org.springframework.stereotype.Service;
-import tech.jhipster.lite.generator.client.angular.security.oauth2keycloak.domain.AngularOAuth2KeycloakModuleFactory;
+import tech.jhipster.lite.generator.client.angular.security.oauth2.domain.AngularOauth2ModuleFactory;
 import tech.jhipster.lite.module.domain.JHipsterModule;
 import tech.jhipster.lite.module.domain.properties.JHipsterModuleProperties;
 
 @Service
-public class AngularOAuth2KeycloakApplicationService {
+public class AngularOauth2ApplicationService {
 
-  private final AngularOAuth2KeycloakModuleFactory angularOauth2;
+  private final AngularOauth2ModuleFactory angularOauth2;
 
-  public AngularOAuth2KeycloakApplicationService() {
-    angularOauth2 = new AngularOAuth2KeycloakModuleFactory();
+  public AngularOauth2ApplicationService() {
+    angularOauth2 = new AngularOauth2ModuleFactory();
   }
 
   public JHipsterModule buildModule(JHipsterModuleProperties properties) {
diff --git a/src/main/java/tech/jhipster/lite/generator/client/angular/security/oauth2keycloak/domain/AngularOAuth2KeycloakModuleFactory.java b/src/main/java/tech/jhipster/lite/generator/client/angular/security/oauth2/domain/AngularOauth2ModuleFactory.java
similarity index 98%
rename from src/main/java/tech/jhipster/lite/generator/client/angular/security/oauth2keycloak/domain/AngularOAuth2KeycloakModuleFactory.java
rename to src/main/java/tech/jhipster/lite/generator/client/angular/security/oauth2/domain/AngularOauth2ModuleFactory.java
index 97a7584f0..b9a06cca3 100644
--- a/src/main/java/tech/jhipster/lite/generator/client/angular/security/oauth2keycloak/domain/AngularOAuth2KeycloakModuleFactory.java
+++ b/src/main/java/tech/jhipster/lite/generator/client/angular/security/oauth2/domain/AngularOauth2ModuleFactory.java
@@ -1,4 +1,4 @@
-package tech.jhipster.lite.generator.client.angular.security.oauth2keycloak.domain;
+package tech.jhipster.lite.generator.client.angular.security.oauth2.domain;
 
 import static tech.jhipster.lite.module.domain.JHipsterModule.from;
 import static tech.jhipster.lite.module.domain.JHipsterModule.lineAfterRegex;
@@ -20,7 +20,7 @@ import tech.jhipster.lite.module.domain.properties.JHipsterModuleProperties;
 import tech.jhipster.lite.module.domain.replacement.ElementReplacer;
 import tech.jhipster.lite.shared.error.domain.Assert;
 
-public class AngularOAuth2KeycloakModuleFactory {
+public class AngularOauth2ModuleFactory {
 
   private static final Pattern PROVIDE_HTTP_CLIENT = Pattern.compile("provideHttpClient\\(\\),");
   private static final ElementReplacer EXISTING_PROVIDE_HTTP_CLIENT_NEEDLE = regex(
@@ -88,7 +88,7 @@ public class AngularOAuth2KeycloakModuleFactory {
 
   private static final String HTTP_AUTH_INTERCEPTOR_IMPORT = "import { httpAuthInterceptor } from './app/auth/http-auth.interceptor';";
 
-  private static final JHipsterSource SOURCE = from("client/angular/security/oauth2keycloak/src/main/webapp/app");
+  private static final JHipsterSource SOURCE = from("client/angular/security/oauth2/src/main/webapp/app");
 
   private static final JHipsterDestination APP_DESTINATION = to("src/main/webapp/app");
 
diff --git a/src/main/java/tech/jhipster/lite/generator/client/angular/security/oauth2keycloak/infrastructure/primary/AngularOAuth2KeycloakModuleConfiguration.java b/src/main/java/tech/jhipster/lite/generator/client/angular/security/oauth2/infrastructure/primary/AngularOAuth2ModuleConfiguration.java
similarity index 82%
rename from src/main/java/tech/jhipster/lite/generator/client/angular/security/oauth2keycloak/infrastructure/primary/AngularOAuth2KeycloakModuleConfiguration.java
rename to src/main/java/tech/jhipster/lite/generator/client/angular/security/oauth2/infrastructure/primary/AngularOAuth2ModuleConfiguration.java
index 7acb6073c..88c6d2dcc 100644
--- a/src/main/java/tech/jhipster/lite/generator/client/angular/security/oauth2keycloak/infrastructure/primary/AngularOAuth2KeycloakModuleConfiguration.java
+++ b/src/main/java/tech/jhipster/lite/generator/client/angular/security/oauth2/infrastructure/primary/AngularOAuth2ModuleConfiguration.java
@@ -1,4 +1,4 @@
-package tech.jhipster.lite.generator.client.angular.security.oauth2keycloak.infrastructure.primary;
+package tech.jhipster.lite.generator.client.angular.security.oauth2.infrastructure.primary;
 
 import static tech.jhipster.lite.shared.slug.domain.JHLiteFeatureSlug.ANGULAR_AUTHENTICATION;
 import static tech.jhipster.lite.shared.slug.domain.JHLiteModuleSlug.ANGULAR_CORE;
@@ -6,16 +6,16 @@ import static tech.jhipster.lite.shared.slug.domain.JHLiteModuleSlug.ANGULAR_OAU
 
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-import tech.jhipster.lite.generator.client.angular.security.oauth2keycloak.application.AngularOAuth2KeycloakApplicationService;
+import tech.jhipster.lite.generator.client.angular.security.oauth2.application.AngularOauth2ApplicationService;
 import tech.jhipster.lite.module.domain.resource.JHipsterModuleOrganization;
 import tech.jhipster.lite.module.domain.resource.JHipsterModulePropertiesDefinition;
 import tech.jhipster.lite.module.domain.resource.JHipsterModuleResource;
 
 @Configuration
-class AngularOAuth2KeycloakModuleConfiguration {
+class AngularOAuth2ModuleConfiguration {
 
   @Bean
-  JHipsterModuleResource angularOAuth2Module(AngularOAuth2KeycloakApplicationService angularOAuth2) {
+  JHipsterModuleResource angularOAuth2Module(AngularOauth2ApplicationService angularOAuth2) {
     return JHipsterModuleResource.builder()
       .slug(ANGULAR_OAUTH_2)
       .propertiesDefinition(JHipsterModulePropertiesDefinition.builder().addIndentation().build())
diff --git a/src/main/java/tech/jhipster/lite/generator/client/angular/security/oauth2keycloak/package-info.java b/src/main/java/tech/jhipster/lite/generator/client/angular/security/oauth2/package-info.java
similarity index 88%
rename from src/main/java/tech/jhipster/lite/generator/client/angular/security/oauth2keycloak/package-info.java
rename to src/main/java/tech/jhipster/lite/generator/client/angular/security/oauth2/package-info.java
index 38cab90c3..c33cffebe 100644
--- a/src/main/java/tech/jhipster/lite/generator/client/angular/security/oauth2keycloak/package-info.java
+++ b/src/main/java/tech/jhipster/lite/generator/client/angular/security/oauth2/package-info.java
@@ -1,2 +1,2 @@
 @tech.jhipster.lite.BusinessContext
-package tech.jhipster.lite.generator.client.angular.security.oauth2keycloak;
+package tech.jhipster.lite.generator.client.angular.security.oauth2;
diff --git a/src/main/java/tech/jhipster/lite/shared/slug/domain/JHLiteModuleSlug.java b/src/main/java/tech/jhipster/lite/shared/slug/domain/JHLiteModuleSlug.java
index 1cb173745..6cdd3bcad 100644
--- a/src/main/java/tech/jhipster/lite/shared/slug/domain/JHLiteModuleSlug.java
+++ b/src/main/java/tech/jhipster/lite/shared/slug/domain/JHLiteModuleSlug.java
@@ -18,7 +18,7 @@ public enum JHLiteModuleSlug implements JHipsterModuleSlugFactory {
   ANGULAR_CORE("angular-core", RANK_A),
   ANGULAR_HEALTH("angular-health", RANK_C),
   ANGULAR_JWT("angular-jwt", RANK_C),
-  ANGULAR_OAUTH_2("angular-oauth2-keycloak", RANK_C),
+  ANGULAR_OAUTH_2("angular-oauth2", RANK_C),
   APPLICATION_SERVICE_HEXAGONAL_ARCHITECTURE_DOCUMENTATION("application-service-hexagonal-architecture-documentation", RANK_A),
   APPROVAL_TESTS("approval-tests", RANK_B),
   CAFFEINE_CACHE("caffeine-cache", RANK_A),
diff --git a/src/main/resources/generator/client/angular/security/oauth2keycloak/src/main/webapp/app/auth/http-auth.interceptor.spec.ts.mustache b/src/main/resources/generator/client/angular/security/oauth2/src/main/webapp/app/auth/http-auth.interceptor.spec.ts.mustache
similarity index 100%
rename from src/main/resources/generator/client/angular/security/oauth2keycloak/src/main/webapp/app/auth/http-auth.interceptor.spec.ts.mustache
rename to src/main/resources/generator/client/angular/security/oauth2/src/main/webapp/app/auth/http-auth.interceptor.spec.ts.mustache
diff --git a/src/main/resources/generator/client/angular/security/oauth2keycloak/src/main/webapp/app/auth/http-auth.interceptor.ts.mustache b/src/main/resources/generator/client/angular/security/oauth2/src/main/webapp/app/auth/http-auth.interceptor.ts.mustache
similarity index 100%
rename from src/main/resources/generator/client/angular/security/oauth2keycloak/src/main/webapp/app/auth/http-auth.interceptor.ts.mustache
rename to src/main/resources/generator/client/angular/security/oauth2/src/main/webapp/app/auth/http-auth.interceptor.ts.mustache
diff --git a/src/main/resources/generator/client/angular/security/oauth2keycloak/src/main/webapp/app/auth/oauth2-auth.service.spec.ts.mustache b/src/main/resources/generator/client/angular/security/oauth2/src/main/webapp/app/auth/oauth2-auth.service.spec.ts.mustache
similarity index 100%
rename from src/main/resources/generator/client/angular/security/oauth2keycloak/src/main/webapp/app/auth/oauth2-auth.service.spec.ts.mustache
rename to src/main/resources/generator/client/angular/security/oauth2/src/main/webapp/app/auth/oauth2-auth.service.spec.ts.mustache
diff --git a/src/main/resources/generator/client/angular/security/oauth2keycloak/src/main/webapp/app/auth/oauth2-auth.service.ts.mustache b/src/main/resources/generator/client/angular/security/oauth2/src/main/webapp/app/auth/oauth2-auth.service.ts.mustache
similarity index 100%
rename from src/main/resources/generator/client/angular/security/oauth2keycloak/src/main/webapp/app/auth/oauth2-auth.service.ts.mustache
rename to src/main/resources/generator/client/angular/security/oauth2/src/main/webapp/app/auth/oauth2-auth.service.ts.mustache
diff --git a/src/main/resources/generator/client/angular/security/oauth2keycloak/src/main/webapp/app/login/login.component.html.mustache b/src/main/resources/generator/client/angular/security/oauth2/src/main/webapp/app/login/login.component.html.mustache
similarity index 100%
rename from src/main/resources/generator/client/angular/security/oauth2keycloak/src/main/webapp/app/login/login.component.html.mustache
rename to src/main/resources/generator/client/angular/security/oauth2/src/main/webapp/app/login/login.component.html.mustache
diff --git a/src/main/resources/generator/client/angular/security/oauth2keycloak/src/main/webapp/app/login/login.component.spec.ts.mustache b/src/main/resources/generator/client/angular/security/oauth2/src/main/webapp/app/login/login.component.spec.ts.mustache
similarity index 100%
rename from src/main/resources/generator/client/angular/security/oauth2keycloak/src/main/webapp/app/login/login.component.spec.ts.mustache
rename to src/main/resources/generator/client/angular/security/oauth2/src/main/webapp/app/login/login.component.spec.ts.mustache
diff --git a/src/main/resources/generator/client/angular/security/oauth2keycloak/src/main/webapp/app/login/login.component.ts.mustache b/src/main/resources/generator/client/angular/security/oauth2/src/main/webapp/app/login/login.component.ts.mustache
similarity index 100%
rename from src/main/resources/generator/client/angular/security/oauth2keycloak/src/main/webapp/app/login/login.component.ts.mustache
rename to src/main/resources/generator/client/angular/security/oauth2/src/main/webapp/app/login/login.component.ts.mustache
diff --git a/src/main/resources/generator/dependencies/pom.xml b/src/main/resources/generator/dependencies/pom.xml
index 1a7d9d38e..80070622b 100644
--- a/src/main/resources/generator/dependencies/pom.xml
+++ b/src/main/resources/generator/dependencies/pom.xml
@@ -16,7 +16,7 @@
     <jhlite.version>@project.version@</jhlite.version>
     <!-- Dependencies -->
     <logstash-logback-encoder.version>8.1</logstash-logback-encoder.version>
-    <spring-boot.version>3.4.6</spring-boot.version>
+    <spring-boot.version>3.5.0</spring-boot.version>
     <spring-cloud.version>2024.0.1</spring-cloud.version>
     <spring-cloud-netflix-eureka-client.version>4.2.1</spring-cloud-netflix-eureka-client.version>
     <springdoc-openapi.version>2.8.8</springdoc-openapi.version>
diff --git a/src/main/resources/generator/server/springboot/async/src/AsyncConfiguration.java.mustache b/src/main/resources/generator/server/springboot/async/src/AsyncConfiguration.java.mustache
index 9488abddd..bb98ceb73 100644
--- a/src/main/resources/generator/server/springboot/async/src/AsyncConfiguration.java.mustache
+++ b/src/main/resources/generator/server/springboot/async/src/AsyncConfiguration.java.mustache
@@ -1,10 +1,20 @@
 package {{packageName}}.wire.async.infrastructure.secondary;
 
+import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.scheduling.annotation.EnableAsync;
 import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+import java.util.concurrent.Executor;
 
 @Configuration
 @EnableAsync
 @EnableScheduling
-class AsyncConfiguration {}
+class AsyncConfiguration {
+  @Bean
+  public Executor taskExecutor() {
+    ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
+    executor.initialize();
+    return executor;
+  }
+}
diff --git a/src/main/resources/generator/server/springboot/dbmigration/mongock/mongock.md b/src/main/resources/generator/server/springboot/dbmigration/mongock/mongock.md
index 1e2f0fb52..d907ce629 100644
--- a/src/main/resources/generator/server/springboot/dbmigration/mongock/mongock.md
+++ b/src/main/resources/generator/server/springboot/dbmigration/mongock/mongock.md
@@ -20,7 +20,7 @@ public class BeersCollectionChangeUnit {
     mongo.createCollection(BeerDocument.class);
 
     TextIndexDefinition indexDefinition = new TextIndexDefinitionBuilder().onField("selling_state").build();
-    mongo.indexOps(BeerDocument.class).ensureIndex(indexDefinition);
+    mongo.indexOps(BeerDocument.class).createIndex(indexDefinition);
   }
 
   @RollbackExecution
diff --git a/src/main/resources/generator/server/springboot/mvc/sample/mongodbpersistence/main/infrastructure/secondary/BeersCollectionChangeUnit.java.mustache b/src/main/resources/generator/server/springboot/mvc/sample/mongodbpersistence/main/infrastructure/secondary/BeersCollectionChangeUnit.java.mustache
index db896925a..ceff009f9 100644
--- a/src/main/resources/generator/server/springboot/mvc/sample/mongodbpersistence/main/infrastructure/secondary/BeersCollectionChangeUnit.java.mustache
+++ b/src/main/resources/generator/server/springboot/mvc/sample/mongodbpersistence/main/infrastructure/secondary/BeersCollectionChangeUnit.java.mustache
@@ -18,7 +18,7 @@ public class BeersCollectionChangeUnit {
     mongo.createCollection(BeerDocument.class);
 
     TextIndexDefinition indexDefinition = new TextIndexDefinitionBuilder().onField("selling_state").build();
-    mongo.indexOps(BeerDocument.class).ensureIndex(indexDefinition);
+    mongo.indexOps(BeerDocument.class).createIndex(indexDefinition);
   }
 
   @RollbackExecution
diff --git a/src/main/resources/generator/server/springboot/mvc/security/jwt/authentication/main/infrastructure/primary/SecurityConfiguration.java.mustache b/src/main/resources/generator/server/springboot/mvc/security/jwt/authentication/main/infrastructure/primary/SecurityConfiguration.java.mustache
index ebf01a450..e973f2be6 100644
--- a/src/main/resources/generator/server/springboot/mvc/security/jwt/authentication/main/infrastructure/primary/SecurityConfiguration.java.mustache
+++ b/src/main/resources/generator/server/springboot/mvc/security/jwt/authentication/main/infrastructure/primary/SecurityConfiguration.java.mustache
@@ -23,9 +23,8 @@ import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.security.web.SecurityFilterChain;
 import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
 import org.springframework.security.web.header.writers.ReferrerPolicyHeaderWriter;
-import org.springframework.security.web.servlet.util.matcher.MvcRequestMatcher;
+import org.springframework.security.web.servlet.util.matcher.PathPatternRequestMatcher;
 import org.springframework.web.filter.CorsFilter;
-import org.springframework.web.servlet.handler.HandlerMappingIntrospector;
 import {{packageName}}.shared.authentication.domain.Role;
 
 @Configuration
@@ -36,12 +35,10 @@ class SecurityConfiguration {
 
   private final JwtAuthenticationProperties properties;
   private final CorsFilter corsFilter;
-  private final HandlerMappingIntrospector introspector;
 
-  public SecurityConfiguration(JwtAuthenticationProperties properties, CorsFilter corsFilter, HandlerMappingIntrospector introspector) {
+  public SecurityConfiguration(JwtAuthenticationProperties properties, CorsFilter corsFilter) {
     this.properties = properties;
     this.corsFilter = corsFilter;
-    this.introspector = introspector;
   }
 
   @Bean
@@ -74,18 +71,18 @@ class SecurityConfiguration {
         .requestMatchers(antMatcher("/swagger-ui.html")).permitAll()
         .requestMatchers(antMatcher("/v3/api-docs/**")).permitAll()
         .requestMatchers(antMatcher("/test/**")).permitAll()
-        .requestMatchers(new MvcRequestMatcher(introspector, "/api/authenticate")).permitAll()
-        .requestMatchers(new MvcRequestMatcher(introspector, "/api/register")).permitAll()
-        .requestMatchers(new MvcRequestMatcher(introspector, "/api/activate")).permitAll()
-        .requestMatchers(new MvcRequestMatcher(introspector, "/api/account/reset-password/init")).permitAll()
-        .requestMatchers(new MvcRequestMatcher(introspector, "/api/account/reset-password/finish")).permitAll()
-        .requestMatchers(new MvcRequestMatcher(introspector, "/api/admin/**")).hasAuthority(Role.ADMIN.key())
-        .requestMatchers(new MvcRequestMatcher(introspector, "/api/**")).authenticated()
-        .requestMatchers(new MvcRequestMatcher(introspector, "/management/health")).permitAll()
-        .requestMatchers(new MvcRequestMatcher(introspector, "/management/health/**")).permitAll()
-        .requestMatchers(new MvcRequestMatcher(introspector, "/management/info")).permitAll()
-        .requestMatchers(new MvcRequestMatcher(introspector, "/management/prometheus")).permitAll()
-        .requestMatchers(new MvcRequestMatcher(introspector, "/management/**")).hasAuthority(Role.ADMIN.key())
+        .requestMatchers(PathPatternRequestMatcher.withDefaults().matcher("/api/authenticate")).permitAll()
+        .requestMatchers(PathPatternRequestMatcher.withDefaults().matcher("/api/register")).permitAll()
+        .requestMatchers(PathPatternRequestMatcher.withDefaults().matcher("/api/activate")).permitAll()
+        .requestMatchers(PathPatternRequestMatcher.withDefaults().matcher("/api/account/reset-password/init")).permitAll()
+        .requestMatchers(PathPatternRequestMatcher.withDefaults().matcher("/api/account/reset-password/finish")).permitAll()
+        .requestMatchers(PathPatternRequestMatcher.withDefaults().matcher("/api/admin/**")).hasAuthority(Role.ADMIN.key())
+        .requestMatchers(PathPatternRequestMatcher.withDefaults().matcher("/api/**")).authenticated()
+        .requestMatchers(PathPatternRequestMatcher.withDefaults().matcher("/management/health")).permitAll()
+        .requestMatchers(PathPatternRequestMatcher.withDefaults().matcher("/management/health/**")).permitAll()
+        .requestMatchers(PathPatternRequestMatcher.withDefaults().matcher("/management/info")).permitAll()
+        .requestMatchers(PathPatternRequestMatcher.withDefaults().matcher("/management/prometheus")).permitAll()
+        .requestMatchers(PathPatternRequestMatcher.withDefaults().matcher("/management/**")).hasAuthority(Role.ADMIN.key())
         .anyRequest().authenticated()
       );
 
diff --git a/src/main/resources/generator/server/springboot/mvc/security/oauth2/core/main/infrastructure/primary/SecurityConfiguration.java.mustache b/src/main/resources/generator/server/springboot/mvc/security/oauth2/core/main/infrastructure/primary/SecurityConfiguration.java.mustache
index d0068515c..17f4005ad 100644
--- a/src/main/resources/generator/server/springboot/mvc/security/oauth2/core/main/infrastructure/primary/SecurityConfiguration.java.mustache
+++ b/src/main/resources/generator/server/springboot/mvc/security/oauth2/core/main/infrastructure/primary/SecurityConfiguration.java.mustache
@@ -32,9 +32,8 @@ import org.springframework.security.oauth2.server.resource.authentication.JwtAut
 import org.springframework.security.web.SecurityFilterChain;
 import org.springframework.security.web.csrf.CsrfFilter;
 import org.springframework.security.web.header.writers.ReferrerPolicyHeaderWriter;
-import org.springframework.security.web.servlet.util.matcher.MvcRequestMatcher;
+import org.springframework.security.web.servlet.util.matcher.PathPatternRequestMatcher;
 import org.springframework.web.filter.CorsFilter;
-import org.springframework.web.servlet.handler.HandlerMappingIntrospector;
 import {{packageName}}.shared.authentication.domain.Role;
 import {{packageName}}.shared.generation.domain.ExcludeFromGeneratedCodeCoverage;
 
@@ -47,19 +46,16 @@ class SecurityConfiguration {
 
   private final ApplicationSecurityProperties applicationSecurityProperties;
   private final CorsFilter corsFilter;
-  private final HandlerMappingIntrospector introspector;
 
   @Value("${spring.security.oauth2.client.provider.oidc.issuer-uri}")
   private String issuerUri;
 
   public SecurityConfiguration(
     CorsFilter corsFilter,
-    ApplicationSecurityProperties applicationSecurityProperties,
-    HandlerMappingIntrospector introspector
+    ApplicationSecurityProperties applicationSecurityProperties
   ) {
     this.corsFilter = corsFilter;
     this.applicationSecurityProperties = applicationSecurityProperties;
-    this.introspector = introspector;
   }
 
   @Bean
@@ -84,15 +80,15 @@ class SecurityConfiguration {
         .requestMatchers(antMatcher("/swagger-ui.html")).permitAll()
         .requestMatchers(antMatcher("/v3/api-docs/**")).permitAll()
         .requestMatchers(antMatcher("/test/**")).permitAll()
-        .requestMatchers(new MvcRequestMatcher(introspector, "/api/authenticate")).permitAll()
-        .requestMatchers(new MvcRequestMatcher(introspector, "/api/auth-info")).permitAll()
-        .requestMatchers(new MvcRequestMatcher(introspector, "/api/admin/**")).hasAuthority(Role.ADMIN.key())
-        .requestMatchers(new MvcRequestMatcher(introspector, "/api/**")).authenticated()
-        .requestMatchers(new MvcRequestMatcher(introspector, "/management/health")).permitAll()
-        .requestMatchers(new MvcRequestMatcher(introspector, "/management/health/**")).permitAll()
-        .requestMatchers(new MvcRequestMatcher(introspector, "/management/info")).permitAll()
-        .requestMatchers(new MvcRequestMatcher(introspector, "/management/prometheus")).permitAll()
-        .requestMatchers(new MvcRequestMatcher(introspector, "/management/**")).hasAuthority(Role.ADMIN.key())
+        .requestMatchers(PathPatternRequestMatcher.withDefaults().matcher("/api/authenticate")).permitAll()
+        .requestMatchers(PathPatternRequestMatcher.withDefaults().matcher("/api/auth-info")).permitAll()
+        .requestMatchers(PathPatternRequestMatcher.withDefaults().matcher("/api/admin/**")).hasAuthority(Role.ADMIN.key())
+        .requestMatchers(PathPatternRequestMatcher.withDefaults().matcher("/api/**")).authenticated()
+        .requestMatchers(PathPatternRequestMatcher.withDefaults().matcher("/management/health")).permitAll()
+        .requestMatchers(PathPatternRequestMatcher.withDefaults().matcher("/management/health/**")).permitAll()
+        .requestMatchers(PathPatternRequestMatcher.withDefaults().matcher("/management/info")).permitAll()
+        .requestMatchers(PathPatternRequestMatcher.withDefaults().matcher("/management/prometheus")).permitAll()
+        .requestMatchers(PathPatternRequestMatcher.withDefaults().matcher("/management/**")).hasAuthority(Role.ADMIN.key())
         .anyRequest().authenticated()
       )
       .oauth2Login(withDefaults())


Test patch:
diff --git a/src/main/resources/generator/server/javatool/base/test/ReplaceCamelCase.java.mustache b/src/main/resources/generator/server/javatool/base/test/ReplaceCamelCase.java.mustache
index 0123331b7..e9d584ec9 100644
--- a/src/main/resources/generator/server/javatool/base/test/ReplaceCamelCase.java.mustache
+++ b/src/main/resources/generator/server/javatool/base/test/ReplaceCamelCase.java.mustache
@@ -1,12 +1,13 @@
 package {{packageName}};
 
 import java.lang.reflect.Method;
+import java.util.List;
 import org.junit.jupiter.api.DisplayNameGenerator;
 
 public class ReplaceCamelCase extends DisplayNameGenerator.Standard {
 
   @Override
-  public String generateDisplayNameForMethod(Class<?> testClass, Method testMethod) {
+  public String generateDisplayNameForMethod(List<Class<?>> enclosingInstanceTypes, Class<?> testClass, Method testMethod) {
     return this.replaceCapitals(testMethod.getName());
   }
 
diff --git a/src/test/features/client/angular-oauth2-keycloak.feature b/src/test/features/client/angular-oauth2-keycloak.feature
deleted file mode 100644
index 41b32d334..000000000
--- a/src/test/features/client/angular-oauth2-keycloak.feature
+++ /dev/null
@@ -1,10 +0,0 @@
-Feature: Angular oauth2 module
-
-  Scenario: Should apply Angular OAuth2 Keycloak module
-    When I apply modules to default project
-      | init                    |
-      | prettier                |
-      | angular-core            |
-      | angular-oauth2-keycloak |
-    Then I should have files in "src/main/webapp/app/auth"
-      | oauth2-auth.service.ts |
diff --git a/src/test/features/client/angular-oauth2.feature b/src/test/features/client/angular-oauth2.feature
new file mode 100644
index 000000000..92a1234bd
--- /dev/null
+++ b/src/test/features/client/angular-oauth2.feature
@@ -0,0 +1,10 @@
+Feature: Angular oauth2 module
+
+  Scenario: Should apply Angular OAuth2 module
+    When I apply modules to default project
+      | init           |
+      | prettier       |
+      | angular-core   |
+      | angular-oauth2 |
+    Then I should have files in "src/main/webapp/app/auth"
+      | oauth2-auth.service.ts |
diff --git a/src/test/java/tech/jhipster/lite/generator/client/angular/security/oauth2keycloak/domain/AngularOAuth2KeycloakModuleFactoryTest.java b/src/test/java/tech/jhipster/lite/generator/client/angular/security/oauth2/domain/AngularOauth2ModuleFactoryTest.java
similarity index 95%
rename from src/test/java/tech/jhipster/lite/generator/client/angular/security/oauth2keycloak/domain/AngularOAuth2KeycloakModuleFactoryTest.java
rename to src/test/java/tech/jhipster/lite/generator/client/angular/security/oauth2/domain/AngularOauth2ModuleFactoryTest.java
index 8b84e5a11..4a6850f29 100644
--- a/src/test/java/tech/jhipster/lite/generator/client/angular/security/oauth2keycloak/domain/AngularOAuth2KeycloakModuleFactoryTest.java
+++ b/src/test/java/tech/jhipster/lite/generator/client/angular/security/oauth2/domain/AngularOauth2ModuleFactoryTest.java
@@ -1,4 +1,4 @@
-package tech.jhipster.lite.generator.client.angular.security.oauth2keycloak.domain;
+package tech.jhipster.lite.generator.client.angular.security.oauth2.domain;
 
 import static tech.jhipster.lite.module.infrastructure.secondary.JHipsterModulesAssertions.*;
 
@@ -10,9 +10,9 @@ import tech.jhipster.lite.module.domain.JHipsterModulesFixture;
 import tech.jhipster.lite.module.domain.properties.JHipsterModuleProperties;
 
 @UnitTest
-class AngularOAuth2KeycloakModuleFactoryTest {
+class AngularOauth2ModuleFactoryTest {
 
-  private static final AngularOAuth2KeycloakModuleFactory factory = new AngularOAuth2KeycloakModuleFactory();
+  private static final AngularOauth2ModuleFactory factory = new AngularOauth2ModuleFactory();
 
   @Test
   void shouldBuildModuleWithEmptyAngularFile() {
diff --git a/tests-ci/generate.sh b/tests-ci/generate.sh
index af6e343cc..8ee240842 100755
--- a/tests-ci/generate.sh
+++ b/tests-ci/generate.sh
@@ -416,7 +416,7 @@ elif [[ $application == 'angularoauth2app' ]]; then
     "springdoc-mvc-openapi" \
     "springdoc-oauth2"
 
-  apply_modules "angular-oauth2-keycloak"
+  apply_modules "angular-oauth2"
 
 elif [[ $application == 'reactapp' ]]; then
   init_server