Class InjectionMetadata
java.lang.Object
org.springframework.beans.factory.annotation.InjectionMetadata
Internal class for managing injection metadata.
Not intended for direct use in applications.
Used by AutowiredAnnotationBeanPostProcessor,
CommonAnnotationBeanPostProcessor, and
PersistenceAnnotationBeanPostProcessor.
- Since:
- 2.5
- Author:
- Juergen Hoeller
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classA single injected element. -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final InjectionMetadataAn emptyInjectionMetadatainstance with no-op callbacks. -
Constructor Summary
ConstructorsConstructorDescriptionInjectionMetadata(Class<?> targetClass, Collection<InjectionMetadata.InjectedElement> elements) Create a newInjectionMetadata instance. -
Method Summary
Modifier and TypeMethodDescriptionvoidcheckConfigMembers(RootBeanDefinition beanDefinition) voidclear(PropertyValues pvs) Clear property skipping for the contained elements.static InjectionMetadataforElements(Collection<InjectionMetadata.InjectedElement> elements, Class<?> clazz) Return anInjectionMetadatainstance, possibly for empty elements.Return theelementsto inject.Return theelementsto inject based on the specifiedPropertyValues.voidinject(Object target, String beanName, PropertyValues pvs) protected booleanneedsRefresh(Class<?> clazz) Determine whether this metadata instance needs to be refreshed.static booleanneedsRefresh(InjectionMetadata metadata, Class<?> clazz) Check whether the given injection metadata needs to be refreshed.
-
Field Details
-
EMPTY
An emptyInjectionMetadatainstance with no-op callbacks.- Since:
- 5.2
-
-
Constructor Details
-
InjectionMetadata
public InjectionMetadata(Class<?> targetClass, Collection<InjectionMetadata.InjectedElement> elements) Create a newInjectionMetadata instance.Preferably use
forElements(java.util.Collection<org.springframework.beans.factory.annotation.InjectionMetadata.InjectedElement>, java.lang.Class<?>)for reusing theEMPTYinstance in case of no elements.- Parameters:
targetClass- the target classelements- the associated elements to inject- See Also:
-
-
Method Details
-
getInjectedElements
Return theelementsto inject.- Returns:
- the elements to inject
-
getInjectedElements
public Collection<InjectionMetadata.InjectedElement> getInjectedElements(@Nullable PropertyValues pvs) Return theelementsto inject based on the specifiedPropertyValues. If a property is already defined for anInjectionMetadata.InjectedElement, it is excluded.- Parameters:
pvs- the property values to consider- Returns:
- the elements to inject
- Since:
- 6.0.10
-
needsRefresh
Determine whether this metadata instance needs to be refreshed.- Parameters:
clazz- the current target class- Returns:
trueindicating a refresh,falseotherwise- Since:
- 5.2.4
-
checkConfigMembers
-
inject
public void inject(Object target, @Nullable String beanName, @Nullable PropertyValues pvs) throws Throwable - Throws:
Throwable
-
clear
Clear property skipping for the contained elements.- Since:
- 3.2.13
-
forElements
public static InjectionMetadata forElements(Collection<InjectionMetadata.InjectedElement> elements, Class<?> clazz) Return anInjectionMetadatainstance, possibly for empty elements.- Parameters:
elements- the elements to inject (possibly empty)clazz- the target class- Returns:
- a new
InjectionMetadata(Class, Collection)instance - Since:
- 5.2
-
needsRefresh
@Contract("null, _ -> true") public static boolean needsRefresh(@Nullable InjectionMetadata metadata, Class<?> clazz) Check whether the given injection metadata needs to be refreshed.- Parameters:
metadata- the existing metadata instanceclazz- the current target class- Returns:
trueindicating a refresh,falseotherwise- See Also:
-