类org.springframework.beans.factory.config.BeanDefinitionCustomizer源码实例Demo

下面列出了怎么用org.springframework.beans.factory.config.BeanDefinitionCustomizer的API类实例代码及写法,或者点击链接到github查看源代码。

/**
 * Register a bean from the given bean class, deriving its metadata from
 * class-declared annotations.
 * @param annotatedClass the class of the bean
 * @param name an explicit name for the bean
 * @param supplier a callback for creating an instance of the bean
 * (may be {@code null})
 * @param qualifiers specific qualifier annotations to consider, if any,
 * in addition to qualifiers at the bean class level
 * @param customizers one or more callbacks for customizing the factory's
 * {@link BeanDefinition}, e.g. setting a lazy-init or primary flag
 * @since 5.0
 */
private <T> void doRegisterBean(Class<T> annotatedClass, @Nullable String name,
		@Nullable Class<? extends Annotation>[] qualifiers, @Nullable Supplier<T> supplier,
		@Nullable BeanDefinitionCustomizer[] customizers) {

	AnnotatedGenericBeanDefinition abd = new AnnotatedGenericBeanDefinition(annotatedClass);
	if (this.conditionEvaluator.shouldSkip(abd.getMetadata())) {
		return;
	}

	abd.setInstanceSupplier(supplier);
	ScopeMetadata scopeMetadata = this.scopeMetadataResolver.resolveScopeMetadata(abd);
	abd.setScope(scopeMetadata.getScopeName());
	String beanName = (name != null ? name : this.beanNameGenerator.generateBeanName(abd, this.registry));

	AnnotationConfigUtils.processCommonDefinitionAnnotations(abd);
	if (qualifiers != null) {
		for (Class<? extends Annotation> qualifier : qualifiers) {
			if (Primary.class == qualifier) {
				abd.setPrimary(true);
			}
			else if (Lazy.class == qualifier) {
				abd.setLazyInit(true);
			}
			else {
				abd.addQualifier(new AutowireCandidateQualifier(qualifier));
			}
		}
	}
	if (customizers != null) {
		for (BeanDefinitionCustomizer customizer : customizers) {
			customizer.customize(abd);
		}
	}

	BeanDefinitionHolder definitionHolder = new BeanDefinitionHolder(abd, beanName);
	definitionHolder = AnnotationConfigUtils.applyScopedProxyMode(scopeMetadata, definitionHolder, this.registry);
	BeanDefinitionReaderUtils.registerBeanDefinition(definitionHolder, this.registry);
}
 
/**
 * Apply the given customizers to the underlying bean definition.
 * @since 5.0
 */
public BeanDefinitionBuilder applyCustomizers(BeanDefinitionCustomizer... customizers) {
	for (BeanDefinitionCustomizer customizer : customizers) {
		customizer.customize(this.beanDefinition);
	}
	return this;
}
 
/**
 * Register a bean from the given bean class, deriving its metadata from
 * class-declared annotations.
 * @param annotatedClass the class of the bean
 * @param instanceSupplier a callback for creating an instance of the bean
 * (may be {@code null})
 * @param name an explicit name for the bean
 * @param qualifiers specific qualifier annotations to consider, if any,
 * in addition to qualifiers at the bean class level
 * @param definitionCustomizers one or more callbacks for customizing the
 * factory's {@link BeanDefinition}, e.g. setting a lazy-init or primary flag
 * @since 5.0
 */
<T> void doRegisterBean(Class<T> annotatedClass, @Nullable Supplier<T> instanceSupplier, @Nullable String name,
		@Nullable Class<? extends Annotation>[] qualifiers, BeanDefinitionCustomizer... definitionCustomizers) {

	AnnotatedGenericBeanDefinition abd = new AnnotatedGenericBeanDefinition(annotatedClass);
	if (this.conditionEvaluator.shouldSkip(abd.getMetadata())) {
		return;
	}

	abd.setInstanceSupplier(instanceSupplier);
	ScopeMetadata scopeMetadata = this.scopeMetadataResolver.resolveScopeMetadata(abd);
	abd.setScope(scopeMetadata.getScopeName());
	String beanName = (name != null ? name : this.beanNameGenerator.generateBeanName(abd, this.registry));

	AnnotationConfigUtils.processCommonDefinitionAnnotations(abd);
	if (qualifiers != null) {
		for (Class<? extends Annotation> qualifier : qualifiers) {
			if (Primary.class == qualifier) {
				abd.setPrimary(true);
			}
			else if (Lazy.class == qualifier) {
				abd.setLazyInit(true);
			}
			else {
				abd.addQualifier(new AutowireCandidateQualifier(qualifier));
			}
		}
	}
	for (BeanDefinitionCustomizer customizer : definitionCustomizers) {
		customizer.customize(abd);
	}

	BeanDefinitionHolder definitionHolder = new BeanDefinitionHolder(abd, beanName);
	definitionHolder = AnnotationConfigUtils.applyScopedProxyMode(scopeMetadata, definitionHolder, this.registry);
	BeanDefinitionReaderUtils.registerBeanDefinition(definitionHolder, this.registry);
}
 
/**
 * Apply the given customizers to the underlying bean definition.
 * @since 5.0
 */
public BeanDefinitionBuilder applyCustomizers(BeanDefinitionCustomizer... customizers) {
	for (BeanDefinitionCustomizer customizer : customizers) {
		customizer.customize(this.beanDefinition);
	}
	return this;
}
 
@Override
public <T> void registerBean(@Nullable String beanName, Class<T> beanClass,
		@Nullable Supplier<T> supplier, BeanDefinitionCustomizer... customizers) {

	this.reader.registerBean(beanClass, beanName, supplier, customizers);
}
 
@Override
public <T> void registerBean(@Nullable String beanName, Class<T> beanClass, @Nullable Supplier<T> supplier,
		BeanDefinitionCustomizer... customizers) {

	this.reader.doRegisterBean(beanClass, supplier, beanName, null, customizers);
}
 
源代码7 项目: spring-fu   文件: BeanDefinitionDsl.java
/**
 * Declare a bean definition from the given bean class.
 */
public <T> BeanDefinitionDsl bean(Class<T> beanClass, BeanDefinitionCustomizer... customizers) {
	String beanName = BeanDefinitionReaderUtils.uniqueBeanName(beanClass.getName(), context);
	this.context.registerBean(beanName, beanClass, customizers);
	return this;
}
 
源代码8 项目: spring-fu   文件: BeanDefinitionDsl.java
/**
 * Declare a bean definition from the given bean name and class.
 */
public <T> BeanDefinitionDsl bean(String beanName, Class<T> beanClass, BeanDefinitionCustomizer... customizers) {
	this.context.registerBean(beanName, beanClass);
	return this;
}
 
源代码9 项目: spring-fu   文件: BeanDefinitionDsl.java
/**
 * Declare a bean definition from the given bean class and supplier.
 */
public <T> BeanDefinitionDsl bean(Class<T> beanClass, Supplier<T> supplier, BeanDefinitionCustomizer... customizers) {
	String beanName = BeanDefinitionReaderUtils.uniqueBeanName(beanClass.getName(), context);
	this.context.registerBean(beanName, beanClass, supplier, customizers);
	return this;
}
 
源代码10 项目: spring-fu   文件: BeanDefinitionDsl.java
/**
 * Declare a bean definition from the given bean name, class and supplier.
 */
public <T> BeanDefinitionDsl bean(String beanName, Class<T> beanClass, Supplier<T> supplier, BeanDefinitionCustomizer... customizers) {
	this.context.registerBean(beanName, beanClass, supplier, customizers);
	return this;
}
 
/**
 * Register a bean from the given bean class, using the given supplier for
 * obtaining a new instance (typically declared as a lambda expression or
 * method reference), optionally customizing its bean definition metadata
 * (again typically declared as a lambda expression).
 * <p>This method can be overridden to adapt the registration mechanism for
 * all {@code registerBean} methods (since they all delegate to this one).
 * @param beanName the name of the bean (may be {@code null})
 * @param beanClass the class of the bean
 * @param supplier a callback for creating an instance of the bean (in case
 * of {@code null}, resolving a public constructor to be autowired instead)
 * @param customizers one or more callbacks for customizing the factory's
 * {@link BeanDefinition}, e.g. setting a lazy-init or primary flag
 * @since 5.0
 */
public <T> void registerBean(@Nullable String beanName, Class<T> beanClass,
		@Nullable Supplier<T> supplier, BeanDefinitionCustomizer... customizers) {

	ClassDerivedBeanDefinition beanDefinition = new ClassDerivedBeanDefinition(beanClass);
	if (supplier != null) {
		beanDefinition.setInstanceSupplier(supplier);
	}
	for (BeanDefinitionCustomizer customizer : customizers) {
		customizer.customize(beanDefinition);
	}

	String nameToUse = (beanName != null ? beanName : beanClass.getName());
	registerBeanDefinition(nameToUse, beanDefinition);
}
 
/**
 * Register a bean from the given bean class, using the given supplier for
 * obtaining a new instance (typically declared as a lambda expression or
 * method reference), optionally customizing its bean definition metadata
 * (again typically declared as a lambda expression or method reference).
 * <p>This method can be overridden to adapt the registration mechanism for
 * all {@code registerBean} methods (since they all delegate to this one).
 * @param beanName the name of the bean (may be {@code null})
 * @param beanClass the class of the bean
 * @param supplier a callback for creating an instance of the bean (in case
 * of {@code null}, resolving a public constructor to be autowired instead)
 * @param customizers one or more callbacks for customizing the factory's
 * {@link BeanDefinition}, e.g. setting a lazy-init or primary flag
 * @since 5.0
 */
public <T> void registerBean(@Nullable String beanName, Class<T> beanClass,
		@Nullable Supplier<T> supplier, BeanDefinitionCustomizer... customizers) {

	ClassDerivedBeanDefinition beanDefinition = new ClassDerivedBeanDefinition(beanClass);
	if (supplier != null) {
		beanDefinition.setInstanceSupplier(supplier);
	}
	for (BeanDefinitionCustomizer customizer : customizers) {
		customizer.customize(beanDefinition);
	}

	String nameToUse = (beanName != null ? beanName : beanClass.getName());
	registerBeanDefinition(nameToUse, beanDefinition);
}
 
/**
 * Register a bean from the given bean class, deriving its metadata from
 * class-declared annotations.
 * @param annotatedClass the class of the bean
 * @param name an explicit name for the bean
 * (or {@code null} for generating a default bean name)
 * @param supplier a callback for creating an instance of the bean
 * (may be {@code null})
 * @param customizers one or more callbacks for customizing the factory's
 * {@link BeanDefinition}, e.g. setting a lazy-init or primary flag
 * @since 5.2
 */
public <T> void registerBean(Class<T> annotatedClass, @Nullable String name, @Nullable Supplier<T> supplier,
		BeanDefinitionCustomizer... customizers) {

	doRegisterBean(annotatedClass, name, null, supplier, customizers);
}
 
/**
 * Register a bean from the given bean class, optionally customizing its
 * bean definition metadata (typically declared as a lambda expression).
 * @param beanClass the class of the bean (resolving a public constructor
 * to be autowired, possibly simply the default constructor)
 * @param customizers one or more callbacks for customizing the factory's
 * {@link BeanDefinition}, e.g. setting a lazy-init or primary flag
 * @since 5.0
 * @see #registerBean(String, Class, Supplier, BeanDefinitionCustomizer...)
 */
public final <T> void registerBean(Class<T> beanClass, BeanDefinitionCustomizer... customizers) {
	registerBean(null, beanClass, null, customizers);
}
 
/**
 * Register a bean from the given bean class, optionally customizing its
 * bean definition metadata (typically declared as a lambda expression).
 * @param beanName the name of the bean (may be {@code null})
 * @param beanClass the class of the bean (resolving a public constructor
 * to be autowired, possibly simply the default constructor)
 * @param customizers one or more callbacks for customizing the factory's
 * {@link BeanDefinition}, e.g. setting a lazy-init or primary flag
 * @since 5.0
 * @see #registerBean(String, Class, Supplier, BeanDefinitionCustomizer...)
 */
public final <T> void registerBean(
		@Nullable String beanName, Class<T> beanClass, BeanDefinitionCustomizer... customizers) {

	registerBean(beanName, beanClass, null, customizers);
}
 
/**
 * Register a bean from the given bean class, using the given supplier for
 * obtaining a new instance (typically declared as a lambda expression or
 * method reference), optionally customizing its bean definition metadata
 * (again typically declared as a lambda expression).
 * @param beanClass the class of the bean
 * @param supplier a callback for creating an instance of the bean
 * @param customizers one or more callbacks for customizing the factory's
 * {@link BeanDefinition}, e.g. setting a lazy-init or primary flag
 * @since 5.0
 * @see #registerBean(String, Class, Supplier, BeanDefinitionCustomizer...)
 */
public final <T> void registerBean(
		Class<T> beanClass, Supplier<T> supplier, BeanDefinitionCustomizer... customizers) {

	registerBean(null, beanClass, supplier, customizers);
}
 
/**
 * Register a bean from the given bean class, optionally customizing its
 * bean definition metadata (typically declared as a lambda expression
 * or method reference).
 * @param beanClass the class of the bean (resolving a public constructor
 * to be autowired, possibly simply the default constructor)
 * @param customizers one or more callbacks for customizing the factory's
 * {@link BeanDefinition}, e.g. setting a lazy-init or primary flag
 * @since 5.0
 * @see #registerBean(String, Class, Supplier, BeanDefinitionCustomizer...)
 */
public final <T> void registerBean(Class<T> beanClass, BeanDefinitionCustomizer... customizers) {
	registerBean(null, beanClass, null, customizers);
}
 
/**
 * Register a bean from the given bean class, using the given supplier for
 * obtaining a new instance (typically declared as a lambda expression or
 * method reference), optionally customizing its bean definition metadata
 * (again typically declared as a lambda expression or method reference).
 * @param beanName the name of the bean (may be {@code null})
 * @param beanClass the class of the bean (resolving a public constructor
 * to be autowired, possibly simply the default constructor)
 * @param customizers one or more callbacks for customizing the factory's
 * {@link BeanDefinition}, e.g. setting a lazy-init or primary flag
 * @since 5.0
 * @see #registerBean(String, Class, Supplier, BeanDefinitionCustomizer...)
 */
public final <T> void registerBean(
		@Nullable String beanName, Class<T> beanClass, BeanDefinitionCustomizer... customizers) {

	registerBean(beanName, beanClass, null, customizers);
}
 
/**
 * Register a bean from the given bean class, using the given supplier for
 * obtaining a new instance (typically declared as a lambda expression or
 * method reference), optionally customizing its bean definition metadata
 * (again typically declared as a lambda expression or method reference).
 * @param beanClass the class of the bean
 * @param supplier a callback for creating an instance of the bean
 * @param customizers one or more callbacks for customizing the factory's
 * {@link BeanDefinition}, e.g. setting a lazy-init or primary flag
 * @since 5.0
 * @see #registerBean(String, Class, Supplier, BeanDefinitionCustomizer...)
 */
public final <T> void registerBean(
		Class<T> beanClass, Supplier<T> supplier, BeanDefinitionCustomizer... customizers) {

	registerBean(null, beanClass, supplier, customizers);
}
 
 类方法
 同包方法