/*
 * Copyright 2002-2017 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.springframework.beans.factory.wiring;

import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;

Holder for bean wiring metadata information about a particular class. Used in conjunction with the Configurable annotation and the AspectJ AnnotationBeanConfigurerAspect.
Author:Rod Johnson, Juergen Hoeller
See Also:
Since:2.0
/** * Holder for bean wiring metadata information about a particular class. Used in * conjunction with the {@link org.springframework.beans.factory.annotation.Configurable} * annotation and the AspectJ {@code AnnotationBeanConfigurerAspect}. * * @author Rod Johnson * @author Juergen Hoeller * @since 2.0 * @see BeanWiringInfoResolver * @see org.springframework.beans.factory.config.AutowireCapableBeanFactory * @see org.springframework.beans.factory.annotation.Configurable */
public class BeanWiringInfo {
Constant that indicates autowiring bean properties by name.
See Also:
/** * Constant that indicates autowiring bean properties by name. * @see #BeanWiringInfo(int, boolean) * @see org.springframework.beans.factory.config.AutowireCapableBeanFactory#AUTOWIRE_BY_NAME */
public static final int AUTOWIRE_BY_NAME = AutowireCapableBeanFactory.AUTOWIRE_BY_NAME;
Constant that indicates autowiring bean properties by type.
See Also:
/** * Constant that indicates autowiring bean properties by type. * @see #BeanWiringInfo(int, boolean) * @see org.springframework.beans.factory.config.AutowireCapableBeanFactory#AUTOWIRE_BY_TYPE */
public static final int AUTOWIRE_BY_TYPE = AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE; @Nullable private String beanName; private boolean isDefaultBeanName = false; private int autowireMode = AutowireCapableBeanFactory.AUTOWIRE_NO; private boolean dependencyCheck = false;
Create a default BeanWiringInfo that suggests plain initialization of factory and post-processor callbacks that the bean class may expect.
/** * Create a default BeanWiringInfo that suggests plain initialization of * factory and post-processor callbacks that the bean class may expect. */
public BeanWiringInfo() { }
Create a new BeanWiringInfo that points to the given bean name.
Params:
  • beanName – the name of the bean definition to take the property values from
Throws:
/** * Create a new BeanWiringInfo that points to the given bean name. * @param beanName the name of the bean definition to take the property values from * @throws IllegalArgumentException if the supplied beanName is {@code null}, * is empty, or consists wholly of whitespace */
public BeanWiringInfo(String beanName) { this(beanName, false); }
Create a new BeanWiringInfo that points to the given bean name.
Params:
  • beanName – the name of the bean definition to take the property values from
  • isDefaultBeanName – whether the given bean name is a suggested default bean name, not necessarily matching an actual bean definition
Throws:
/** * Create a new BeanWiringInfo that points to the given bean name. * @param beanName the name of the bean definition to take the property values from * @param isDefaultBeanName whether the given bean name is a suggested * default bean name, not necessarily matching an actual bean definition * @throws IllegalArgumentException if the supplied beanName is {@code null}, * is empty, or consists wholly of whitespace */
public BeanWiringInfo(String beanName, boolean isDefaultBeanName) { Assert.hasText(beanName, "'beanName' must not be empty"); this.beanName = beanName; this.isDefaultBeanName = isDefaultBeanName; }
Create a new BeanWiringInfo that indicates autowiring.
Params:
  • autowireMode – one of the constants AUTOWIRE_BY_NAME / AUTOWIRE_BY_TYPE
  • dependencyCheck – whether to perform a dependency check for object references in the bean instance (after autowiring)
Throws:
See Also:
/** * Create a new BeanWiringInfo that indicates autowiring. * @param autowireMode one of the constants {@link #AUTOWIRE_BY_NAME} / * {@link #AUTOWIRE_BY_TYPE} * @param dependencyCheck whether to perform a dependency check for object * references in the bean instance (after autowiring) * @throws IllegalArgumentException if the supplied {@code autowireMode} * is not one of the allowed values * @see #AUTOWIRE_BY_NAME * @see #AUTOWIRE_BY_TYPE */
public BeanWiringInfo(int autowireMode, boolean dependencyCheck) { if (autowireMode != AUTOWIRE_BY_NAME && autowireMode != AUTOWIRE_BY_TYPE) { throw new IllegalArgumentException("Only constants AUTOWIRE_BY_NAME and AUTOWIRE_BY_TYPE supported"); } this.autowireMode = autowireMode; this.dependencyCheck = dependencyCheck; }
Return whether this BeanWiringInfo indicates autowiring.
/** * Return whether this BeanWiringInfo indicates autowiring. */
public boolean indicatesAutowiring() { return (this.beanName == null); }
Return the specific bean name that this BeanWiringInfo points to, if any.
/** * Return the specific bean name that this BeanWiringInfo points to, if any. */
@Nullable public String getBeanName() { return this.beanName; }
Return whether the specific bean name is a suggested default bean name, not necessarily matching an actual bean definition in the factory.
/** * Return whether the specific bean name is a suggested default bean name, * not necessarily matching an actual bean definition in the factory. */
public boolean isDefaultBeanName() { return this.isDefaultBeanName; }
Return one of the constants AUTOWIRE_BY_NAME / AUTOWIRE_BY_TYPE, if autowiring is indicated.
/** * Return one of the constants {@link #AUTOWIRE_BY_NAME} / * {@link #AUTOWIRE_BY_TYPE}, if autowiring is indicated. */
public int getAutowireMode() { return this.autowireMode; }
Return whether to perform a dependency check for object references in the bean instance (after autowiring).
/** * Return whether to perform a dependency check for object references * in the bean instance (after autowiring). */
public boolean getDependencyCheck() { return this.dependencyCheck; } }