36
36
import org .springframework .beans .factory .support .DefaultListableBeanFactory ;
37
37
import org .springframework .beans .factory .support .RegisteredBean ;
38
38
import org .springframework .beans .factory .support .RootBeanDefinition ;
39
+ import org .springframework .beans .testfixture .beans .RecordBean ;
39
40
import org .springframework .beans .testfixture .beans .TestBean ;
40
41
import org .springframework .beans .testfixture .beans .factory .aot .MockBeanFactoryInitializationCode ;
41
42
import org .springframework .core .test .io .support .MockSpringFactoriesLoader ;
@@ -75,7 +76,7 @@ void applyToAppliesContribution() {
75
76
RegisteredBean registeredBean = registerBean (new RootBeanDefinition (TestBean .class ));
76
77
BeanDefinitionMethodGenerator generator = new BeanDefinitionMethodGenerator (this .methodGeneratorFactory ,
77
78
registeredBean , null , List .of ());
78
- BeanRegistrationsAotContribution contribution = createContribution (generator );
79
+ BeanRegistrationsAotContribution contribution = createContribution (TestBean . class , generator );
79
80
contribution .applyTo (this .generationContext , this .beanFactoryInitializationCode );
80
81
compile ((consumer , compiled ) -> {
81
82
DefaultListableBeanFactory freshBeanFactory = new DefaultListableBeanFactory ();
@@ -89,7 +90,7 @@ void applyToAppliesContributionWithAliases() {
89
90
RegisteredBean registeredBean = registerBean (new RootBeanDefinition (TestBean .class ));
90
91
BeanDefinitionMethodGenerator generator = new BeanDefinitionMethodGenerator (this .methodGeneratorFactory ,
91
92
registeredBean , null , List .of ());
92
- BeanRegistrationsAotContribution contribution = createContribution (generator , "testAlias" );
93
+ BeanRegistrationsAotContribution contribution = createContribution (TestBean . class , generator , "testAlias" );
93
94
contribution .applyTo (this .generationContext , this .beanFactoryInitializationCode );
94
95
compile ((consumer , compiled ) -> {
95
96
DefaultListableBeanFactory freshBeanFactory = new DefaultListableBeanFactory ();
@@ -106,7 +107,7 @@ void applyToWhenHasNameGeneratesPrefixedFeatureName() {
106
107
RegisteredBean registeredBean = registerBean (new RootBeanDefinition (TestBean .class ));
107
108
BeanDefinitionMethodGenerator generator = new BeanDefinitionMethodGenerator (this .methodGeneratorFactory ,
108
109
registeredBean , null , List .of ());
109
- BeanRegistrationsAotContribution contribution = createContribution (generator );
110
+ BeanRegistrationsAotContribution contribution = createContribution (TestBean . class , generator );
110
111
contribution .applyTo (this .generationContext , this .beanFactoryInitializationCode );
111
112
compile ((consumer , compiled ) -> {
112
113
SourceFile sourceFile = compiled .getSourceFile (".*BeanDefinitions" );
@@ -129,7 +130,7 @@ MethodReference generateBeanDefinitionMethod(GenerationContext generationContext
129
130
}
130
131
131
132
};
132
- BeanRegistrationsAotContribution contribution = createContribution (generator );
133
+ BeanRegistrationsAotContribution contribution = createContribution (TestBean . class , generator );
133
134
contribution .applyTo (this .generationContext , this .beanFactoryInitializationCode );
134
135
assertThat (beanRegistrationsCodes ).hasSize (1 );
135
136
BeanRegistrationsCode actual = beanRegistrationsCodes .get (0 );
@@ -141,13 +142,25 @@ void applyToRegisterReflectionHints() {
141
142
RegisteredBean registeredBean = registerBean (new RootBeanDefinition (TestBean .class ));
142
143
BeanDefinitionMethodGenerator generator = new BeanDefinitionMethodGenerator (this .methodGeneratorFactory ,
143
144
registeredBean , null , List .of ());
144
- BeanRegistrationsAotContribution contribution = createContribution (generator );
145
+ BeanRegistrationsAotContribution contribution = createContribution (TestBean . class , generator );
145
146
contribution .applyTo (this .generationContext , this .beanFactoryInitializationCode );
146
147
assertThat (reflection ().onType (TestBean .class )
147
148
.withMemberCategory (MemberCategory .INTROSPECT_DECLARED_METHODS ))
148
149
.accepts (this .generationContext .getRuntimeHints ());
149
150
}
150
151
152
+ @ Test
153
+ void applyToRegisterReflectionHintsOnRecordBean () {
154
+ RegisteredBean registeredBean = registerBean (new RootBeanDefinition (RecordBean .class ));
155
+ BeanDefinitionMethodGenerator generator = new BeanDefinitionMethodGenerator (this .methodGeneratorFactory ,
156
+ registeredBean , null , List .of ());
157
+ BeanRegistrationsAotContribution contribution = createContribution (RecordBean .class , generator );
158
+ contribution .applyTo (this .generationContext , this .beanFactoryInitializationCode );
159
+ assertThat (reflection ().onType (RecordBean .class )
160
+ .withMemberCategories (MemberCategory .INTROSPECT_DECLARED_METHODS , MemberCategory .INVOKE_DECLARED_METHODS ))
161
+ .accepts (this .generationContext .getRuntimeHints ());
162
+ }
163
+
151
164
private RegisteredBean registerBean (RootBeanDefinition rootBeanDefinition ) {
152
165
String beanName = "testBean" ;
153
166
this .beanFactory .registerBeanDefinition (beanName , rootBeanDefinition );
@@ -177,10 +190,10 @@ private void compile(BiConsumer<Consumer<DefaultListableBeanFactory>, Compiled>
177
190
result .accept (compiled .getInstance (Consumer .class ), compiled ));
178
191
}
179
192
180
- private BeanRegistrationsAotContribution createContribution (
193
+ private BeanRegistrationsAotContribution createContribution (Class <?> beanClass ,
181
194
BeanDefinitionMethodGenerator methodGenerator ,String ... aliases ) {
182
195
return new BeanRegistrationsAotContribution (
183
- Map .of (new BeanRegistrationKey ("testBean" , TestBean . class ), new Registration (methodGenerator , aliases )));
196
+ Map .of (new BeanRegistrationKey ("testBean" , beanClass ), new Registration (methodGenerator , aliases )));
184
197
}
185
198
186
199
}
0 commit comments