/*
* 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: - BeanWiringInfo(int, boolean)
- AutowireCapableBeanFactory.AUTOWIRE_BY_NAME
/**
* 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: - BeanWiringInfo(int, boolean)
- AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE
/**
* 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: - IllegalArgumentException – if the supplied beanName is
null
, is empty, or consists wholly of whitespace
/**
* 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: - IllegalArgumentException – if the supplied beanName is
null
, is empty, or consists wholly of whitespace
/**
* 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: - IllegalArgumentException – if the supplied
autowireMode
is not one of the allowed values
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;
}
}