Browse Source

Pass GenerationContext to customizeBeanRegistrationCodeFragments

Update `customizeBeanRegistrationCodeFragments` so that it can access
the `GenerationContext`.

See gh-28557
pull/28572/head
Phillip Webb 2 years ago
parent
commit
305055d6b1
  1. 7
      spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanDefinitionMethodGenerator.java
  2. 5
      spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationAotContribution.java

7
spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanDefinitionMethodGenerator.java

@ -88,7 +88,8 @@ class BeanDefinitionMethodGenerator { @@ -88,7 +88,8 @@ class BeanDefinitionMethodGenerator {
MethodReference generateBeanDefinitionMethod(GenerationContext generationContext,
String featureNamePrefix, BeanRegistrationsCode beanRegistrationsCode) {
BeanRegistrationCodeFragments codeFragments = getCodeFragments(beanRegistrationsCode, featureNamePrefix);
BeanRegistrationCodeFragments codeFragments = getCodeFragments(generationContext,
beanRegistrationsCode, featureNamePrefix);
Class<?> target = codeFragments.getTarget(this.registeredBean,
this.constructorOrFactoryMethod);
if (!target.getName().startsWith("java.")) {
@ -113,14 +114,14 @@ class BeanDefinitionMethodGenerator { @@ -113,14 +114,14 @@ class BeanDefinitionMethodGenerator {
generatedMethod.getName().toString());
}
private BeanRegistrationCodeFragments getCodeFragments(
private BeanRegistrationCodeFragments getCodeFragments(GenerationContext generationContext,
BeanRegistrationsCode beanRegistrationsCode, String featureNamePrefix) {
BeanRegistrationCodeFragments codeFragments = new DefaultBeanRegistrationCodeFragments(
beanRegistrationsCode, this.registeredBean, this.methodGeneratorFactory,
featureNamePrefix);
for (BeanRegistrationAotContribution aotContribution : this.aotContributions) {
codeFragments = aotContribution.customizeBeanRegistrationCodeFragments(codeFragments);
codeFragments = aotContribution.customizeBeanRegistrationCodeFragments(generationContext, codeFragments);
}
return codeFragments;
}

5
spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationAotContribution.java

@ -36,12 +36,13 @@ public interface BeanRegistrationAotContribution { @@ -36,12 +36,13 @@ public interface BeanRegistrationAotContribution {
* Customize the {@link BeanRegistrationCodeFragments} that will be used to
* generate the bean registration code. Custom code fragments can be used if
* default code generation isn't suitable.
* @param generationContext the generation context
* @param codeFragments the existing code fragments
* @return the code fragments to use, may be the original instance or a
* wrapper
*/
default BeanRegistrationCodeFragments customizeBeanRegistrationCodeFragments(
BeanRegistrationCodeFragments codeFragments) {
GenerationContext generationContext, BeanRegistrationCodeFragments codeFragments) {
return codeFragments;
}
@ -70,7 +71,7 @@ public interface BeanRegistrationAotContribution { @@ -70,7 +71,7 @@ public interface BeanRegistrationAotContribution {
@Override
public BeanRegistrationCodeFragments customizeBeanRegistrationCodeFragments(
BeanRegistrationCodeFragments codeFragments) {
GenerationContext generationContext, BeanRegistrationCodeFragments codeFragments) {
return beanRegistrationCodeFragmentsCustomizer.apply(codeFragments);
}

Loading…
Cancel
Save