All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.yulichang.autoconfigure.conditional.OnSqlInjectorCondition Maven / Gradle / Ivy

package com.github.yulichang.autoconfigure.conditional;

import com.baomidou.mybatisplus.core.injector.ISqlInjector;
import org.springframework.beans.factory.annotation.AnnotatedBeanDefinition;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.context.annotation.Primary;
import org.springframework.core.annotation.MergedAnnotation;
import org.springframework.core.annotation.MergedAnnotations;
import org.springframework.core.type.AnnotatedTypeMetadata;
import org.springframework.core.type.MethodMetadata;

import java.lang.annotation.Annotation;
import java.util.Objects;

/**
 * @author yulichang
 * @since 1.4.5
 */
public class OnSqlInjectorCondition implements Condition {

    @Override
    @SuppressWarnings("NullableProblems")
    public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
        if (Objects.nonNull(conditionContext.getBeanFactory())) {
            String[] names = conditionContext.getBeanFactory().getBeanNamesForType(ISqlInjector.class);
            for (String name : names) {
                BeanDefinition definition = conditionContext.getBeanFactory().getBeanDefinition(name);
                if (definition instanceof AnnotatedBeanDefinition) {
                    AnnotatedBeanDefinition annotatedBeanDefinition = (AnnotatedBeanDefinition) definition;
                    MethodMetadata metadata = annotatedBeanDefinition.getFactoryMethodMetadata();
                    if (Objects.nonNull(metadata)) {
                        MergedAnnotations annotations = metadata.getAnnotations();
                        for (MergedAnnotation it : annotations) {
                            if (Objects.equals(it.getType(), Primary.class)) {
                                return false;
                            }
                        }
                    }
                }
            }
        }
        return true;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy