Skip to content

Commit 16e7f1f

Browse files
committed
Complete refactor of AOT concepts
Remove the AOT code that now has an alternative API. Closes gh-28414
1 parent 702207d commit 16e7f1f

File tree

83 files changed

+9
-10950
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

83 files changed

+9
-10950
lines changed

spring-aop/src/main/java/org/springframework/aop/scope/ScopedProxyBeanRegistrationContributionProvider.java

Lines changed: 0 additions & 115 deletions
This file was deleted.

spring-aop/src/test/java/org/springframework/aop/scope/ScopedProxyBeanRegistrationContributionProviderTests.java

Lines changed: 0 additions & 113 deletions
This file was deleted.

spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java

Lines changed: 1 addition & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@
4343
import org.springframework.aot.generate.AccessVisibility;
4444
import org.springframework.aot.generate.GenerationContext;
4545
import org.springframework.aot.generate.MethodReference;
46-
import org.springframework.aot.generator.CodeContribution;
4746
import org.springframework.aot.hint.ExecutableHint;
4847
import org.springframework.aot.hint.ExecutableMode;
4948
import org.springframework.aot.hint.FieldHint;
@@ -59,16 +58,12 @@
5958
import org.springframework.beans.factory.InjectionPoint;
6059
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
6160
import org.springframework.beans.factory.UnsatisfiedDependencyException;
62-
import org.springframework.beans.factory.annotation.InjectionMetadata.InjectedElement;
6361
import org.springframework.beans.factory.aot.BeanRegistrationAotContribution;
6462
import org.springframework.beans.factory.aot.BeanRegistrationAotProcessor;
6563
import org.springframework.beans.factory.aot.BeanRegistrationCode;
6664
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
6765
import org.springframework.beans.factory.config.DependencyDescriptor;
6866
import org.springframework.beans.factory.config.SmartInstantiationAwareBeanPostProcessor;
69-
import org.springframework.beans.factory.generator.AotContributingBeanPostProcessor;
70-
import org.springframework.beans.factory.generator.BeanInstantiationContribution;
71-
import org.springframework.beans.factory.generator.InjectionGenerator;
7267
import org.springframework.beans.factory.support.LookupOverride;
7368
import org.springframework.beans.factory.support.MergedBeanDefinitionPostProcessor;
7469
import org.springframework.beans.factory.support.RegisteredBean;
@@ -157,8 +152,7 @@
157152
* @see Value
158153
*/
159154
public class AutowiredAnnotationBeanPostProcessor implements SmartInstantiationAwareBeanPostProcessor,
160-
MergedBeanDefinitionPostProcessor, AotContributingBeanPostProcessor, BeanRegistrationAotProcessor,
161-
PriorityOrdered, BeanFactoryAware {
155+
MergedBeanDefinitionPostProcessor, BeanRegistrationAotProcessor, PriorityOrdered, BeanFactoryAware {
162156

163157
protected final Log logger = LogFactory.getLog(getClass());
164158

@@ -285,15 +279,6 @@ public void postProcessMergedBeanDefinition(RootBeanDefinition beanDefinition, C
285279
findInjectionMetadata(beanName, beanType, beanDefinition);
286280
}
287281

288-
@Override
289-
public BeanInstantiationContribution contribute(RootBeanDefinition beanDefinition, Class<?> beanType, String beanName) {
290-
InjectionMetadata metadata = findInjectionMetadata(beanName, beanType, beanDefinition);
291-
Collection<InjectedElement> injectedElements = metadata.getInjectedElements();
292-
return (!ObjectUtils.isEmpty(injectedElements)
293-
? new AutowiredAnnotationBeanInstantiationContribution(injectedElements)
294-
: null);
295-
}
296-
297282
@Override
298283
public BeanRegistrationAotContribution processAheadOfTime(RegisteredBean registeredBean) {
299284
Class<?> beanClass = registeredBean.getBeanClass();
@@ -866,52 +851,6 @@ private Object[] resolveMethodArguments(Method method, Object bean, @Nullable St
866851
}
867852
}
868853

869-
private static final class AutowiredAnnotationBeanInstantiationContribution implements BeanInstantiationContribution {
870-
871-
private final Collection<InjectedElement> injectedElements;
872-
873-
private final InjectionGenerator generator;
874-
875-
AutowiredAnnotationBeanInstantiationContribution(Collection<InjectedElement> injectedElements) {
876-
this.injectedElements = injectedElements;
877-
this.generator = new InjectionGenerator();
878-
}
879-
880-
@Override
881-
public void applyTo(CodeContribution contribution) {
882-
this.injectedElements.forEach(element -> {
883-
boolean isRequired = isRequired(element);
884-
Member member = element.getMember();
885-
analyzeMember(contribution, member);
886-
contribution.statements().addStatement(this.generator.generateInjection(member, isRequired));
887-
});
888-
}
889-
890-
private boolean isRequired(InjectedElement element) {
891-
if (element instanceof AutowiredMethodElement injectedMethod) {
892-
return injectedMethod.required;
893-
}
894-
else if (element instanceof AutowiredFieldElement injectedField) {
895-
return injectedField.required;
896-
}
897-
return true;
898-
}
899-
900-
private void analyzeMember(CodeContribution contribution, Member member) {
901-
if (member instanceof Method method) {
902-
contribution.runtimeHints().reflection().registerMethod(method,
903-
hint -> hint.setModes(ExecutableMode.INTROSPECT));
904-
contribution.protectedAccess().analyze(member,
905-
this.generator.getProtectedAccessInjectionOptions(member));
906-
}
907-
else if (member instanceof Field field) {
908-
contribution.runtimeHints().reflection().registerField(field);
909-
contribution.protectedAccess().analyze(member,
910-
this.generator.getProtectedAccessInjectionOptions(member));
911-
}
912-
}
913-
914-
}
915854

916855
/**
917856
* DependencyDescriptor variant with a pre-resolved target bean name.

spring-beans/src/main/java/org/springframework/beans/factory/annotation/InitDestroyAnnotationBeanPostProcessor.java

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,6 @@
4242
import org.springframework.beans.factory.aot.BeanRegistrationAotContribution;
4343
import org.springframework.beans.factory.aot.BeanRegistrationAotProcessor;
4444
import org.springframework.beans.factory.config.DestructionAwareBeanPostProcessor;
45-
import org.springframework.beans.factory.generator.AotContributingBeanPostProcessor;
46-
import org.springframework.beans.factory.generator.BeanInstantiationContribution;
4745
import org.springframework.beans.factory.support.MergedBeanDefinitionPostProcessor;
4846
import org.springframework.beans.factory.support.RegisteredBean;
4947
import org.springframework.beans.factory.support.RootBeanDefinition;
@@ -87,8 +85,7 @@
8785
*/
8886
@SuppressWarnings("serial")
8987
public class InitDestroyAnnotationBeanPostProcessor implements DestructionAwareBeanPostProcessor,
90-
MergedBeanDefinitionPostProcessor, AotContributingBeanPostProcessor, BeanRegistrationAotProcessor,
91-
PriorityOrdered, Serializable {
88+
MergedBeanDefinitionPostProcessor, BeanRegistrationAotProcessor, PriorityOrdered, Serializable {
9289

9390
private final transient LifecycleMetadata emptyLifecycleMetadata =
9491
new LifecycleMetadata(Object.class, Collections.emptyList(), Collections.emptyList()) {
@@ -159,22 +156,6 @@ public void postProcessMergedBeanDefinition(RootBeanDefinition beanDefinition, C
159156
findInjectionMetadata(beanDefinition, beanType);
160157
}
161158

162-
@Override
163-
public BeanInstantiationContribution contribute(RootBeanDefinition beanDefinition, Class<?> beanType, String beanName) {
164-
LifecycleMetadata metadata = findInjectionMetadata(beanDefinition, beanType);
165-
if (!CollectionUtils.isEmpty(metadata.initMethods)) {
166-
String[] initMethodNames = safeMerge(
167-
beanDefinition.getInitMethodNames(), metadata.initMethods);
168-
beanDefinition.setInitMethodNames(initMethodNames);
169-
}
170-
if (!CollectionUtils.isEmpty(metadata.destroyMethods)) {
171-
String[] destroyMethodNames = safeMerge(
172-
beanDefinition.getDestroyMethodNames(), metadata.destroyMethods);
173-
beanDefinition.setDestroyMethodNames(destroyMethodNames);
174-
}
175-
return null;
176-
}
177-
178159
@Override
179160
public BeanRegistrationAotContribution processAheadOfTime(RegisteredBean registeredBean) {
180161
RootBeanDefinition beanDefinition = registeredBean.getMergedBeanDefinition();

0 commit comments

Comments
 (0)