Polishing.

Reformat code. Simplify flow. Add ticket reference to test.

See #3287
Original pull request: #3219
This commit is contained in:
Mark Paluch
2025-05-09 11:07:33 +02:00
parent 77b9cbd5b2
commit 3bc89bb221
2 changed files with 29 additions and 22 deletions

View File

@@ -15,6 +15,15 @@
*/
package org.springframework.data.repository.config;
import java.lang.reflect.TypeVariable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jspecify.annotations.Nullable;
@@ -23,7 +32,12 @@ import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.beans.factory.config.DependencyDescriptor;
import org.springframework.beans.factory.parsing.BeanComponentDefinition;
import org.springframework.beans.factory.support.*;
import org.springframework.beans.factory.support.AutowireCandidateResolver;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.BeanDefinitionReaderUtils;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.context.annotation.ContextAnnotationAutowireCandidateResolver;
import org.springframework.context.support.GenericApplicationContext;
import org.springframework.core.ResolvableType;
@@ -43,10 +57,6 @@ import org.springframework.data.util.ClassUtils;
import org.springframework.util.Assert;
import org.springframework.util.StopWatch;
import java.lang.reflect.TypeVariable;
import java.util.*;
import java.util.stream.Collectors;
/**
* Delegate for configuration integration to reuse the general way of detecting repositories. Customization is done by
* providing a configuration format specific {@link RepositoryConfigurationSource} (currently either XML or annotations
@@ -85,7 +95,7 @@ public class RepositoryConfigurationDelegate {
* @param environment must not be {@literal null}.
*/
public RepositoryConfigurationDelegate(RepositoryConfigurationSource configurationSource,
ResourceLoader resourceLoader, Environment environment) {
ResourceLoader resourceLoader, Environment environment) {
this.isXml = configurationSource instanceof XmlRepositoryConfigurationSource;
boolean isAnnotation = configurationSource instanceof AnnotationRepositoryConfigurationSource;
@@ -110,7 +120,7 @@ public class RepositoryConfigurationDelegate {
* {@link Environment}.
*/
private static Environment defaultEnvironment(@Nullable Environment environment,
@Nullable ResourceLoader resourceLoader) {
@Nullable ResourceLoader resourceLoader) {
if (environment != null) {
return environment;
@@ -129,7 +139,7 @@ public class RepositoryConfigurationDelegate {
* @see org.springframework.beans.factory.support.BeanDefinitionRegistry
*/
public List<BeanComponentDefinition> registerRepositoriesIn(BeanDefinitionRegistry registry,
RepositoryConfigurationExtension extension) {
RepositoryConfigurationExtension extension) {
if (logger.isInfoEnabled()) {
logger.info(LogMessage.format("Bootstrapping Spring Data %s repositories in %s mode.", //
@@ -215,7 +225,7 @@ public class RepositoryConfigurationDelegate {
}
private void registerAotComponents(BeanDefinitionRegistry registry, RepositoryConfigurationExtension extension,
Map<String, RepositoryConfigurationAdapter<?>> metadataByRepositoryBeanName) {
Map<String, RepositoryConfigurationAdapter<?>> metadataByRepositoryBeanName) {
BeanDefinitionBuilder repositoryAotProcessor = BeanDefinitionBuilder
.rootBeanDefinition(extension.getRepositoryAotProcessor()).setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
@@ -238,7 +248,7 @@ public class RepositoryConfigurationDelegate {
* @param registry must not be {@literal null}.
*/
private static void potentiallyLazifyRepositories(Map<String, RepositoryConfiguration<?>> configurations,
BeanDefinitionRegistry registry, BootstrapMode mode) {
BeanDefinitionRegistry registry, BootstrapMode mode) {
if (!(registry instanceof DefaultListableBeanFactory beanFactory) || BootstrapMode.DEFAULT.equals(mode)) {
return;
@@ -262,11 +272,8 @@ public class RepositoryConfigurationDelegate {
&& !beanFactory.containsBean(DeferredRepositoryInitializationListener.class.getName())) {
logger.debug("Registering deferred repository initialization listener.");
if (!beanFactory.containsBean(DeferredRepositoryInitializationListener.class.getName())) {
beanFactory.registerSingleton(DeferredRepositoryInitializationListener.class.getName(),
new DeferredRepositoryInitializationListener(beanFactory));
}
beanFactory.registerSingleton(DeferredRepositoryInitializationListener.class.getName(),
new DeferredRepositoryInitializationListener(beanFactory));
}
}

View File

@@ -15,6 +15,13 @@
*/
package org.springframework.data.repository.config;
import static org.assertj.core.api.Assertions.*;
import java.lang.reflect.TypeVariable;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mockito;
@@ -52,13 +59,6 @@ import org.springframework.data.repository.sample.AddressRepository;
import org.springframework.data.repository.sample.AddressRepositoryClient;
import org.springframework.data.repository.sample.ProductRepository;
import java.lang.reflect.TypeVariable;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
import static org.assertj.core.api.Assertions.assertThat;
/**
* Unit tests for {@link RepositoryConfigurationDelegate}.
*