|
41 | 41 | import org.springframework.aot.hint.predicate.RuntimeHintsPredicates;
|
42 | 42 | import org.springframework.aot.test.generate.TestGenerationContext;
|
43 | 43 | import org.springframework.beans.factory.aot.BeanRegistrationAotContribution;
|
| 44 | +import org.springframework.beans.factory.config.BeanDefinition; |
44 | 45 | import org.springframework.beans.factory.support.DefaultListableBeanFactory;
|
45 | 46 | import org.springframework.beans.factory.support.RegisteredBean;
|
46 |
| -import org.springframework.beans.factory.support.RootBeanDefinition; |
47 | 47 | import org.springframework.core.OverridingClassLoader;
|
48 | 48 | import org.springframework.lang.Nullable;
|
49 | 49 |
|
|
56 | 56 | import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
57 | 57 | import static org.assertj.core.api.Assertions.assertThat;
|
58 | 58 | import static org.mockito.Mockito.mock;
|
| 59 | +import static org.springframework.beans.factory.config.BeanDefinition.ROLE_APPLICATION; |
| 60 | +import static org.springframework.beans.factory.config.BeanDefinition.ROLE_INFRASTRUCTURE; |
| 61 | +import static org.springframework.beans.factory.support.BeanDefinitionBuilder.rootBeanDefinition; |
59 | 62 |
|
60 | 63 | /**
|
61 | 64 | * Tests for {@link BeanValidationBeanRegistrationAotProcessor}.
|
@@ -143,17 +146,28 @@ void shouldSkipConstraintWithMissingDependency() throws Exception {
|
143 | 146 | assertThat(this.generationContext.getRuntimeHints().reflection().typeHints()).isEmpty();
|
144 | 147 | }
|
145 | 148 |
|
| 149 | + @Test // gh-33940 |
| 150 | + void shouldSkipInfrastructureBean() { |
| 151 | + process(EmptyClass.class, ROLE_INFRASTRUCTURE); |
| 152 | + assertThat(this.generationContext.getRuntimeHints().reflection().typeHints()).isEmpty(); |
| 153 | + } |
| 154 | + |
146 | 155 | private void process(Class<?> beanClass) {
|
147 |
| - BeanRegistrationAotContribution contribution = createContribution(beanClass); |
| 156 | + process(beanClass, ROLE_APPLICATION); |
| 157 | + } |
| 158 | + |
| 159 | + private void process(Class<?> beanClass, int role) { |
| 160 | + BeanRegistrationAotContribution contribution = createContribution(beanClass, role); |
148 | 161 | if (contribution != null) {
|
149 | 162 | contribution.applyTo(this.generationContext, mock());
|
150 | 163 | }
|
151 | 164 | }
|
152 | 165 |
|
153 | 166 | @Nullable
|
154 |
| - private BeanRegistrationAotContribution createContribution(Class<?> beanClass) { |
| 167 | + private BeanRegistrationAotContribution createContribution(Class<?> beanClass, int role) { |
155 | 168 | DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
|
156 |
| - beanFactory.registerBeanDefinition(beanClass.getName(), new RootBeanDefinition(beanClass)); |
| 169 | + BeanDefinition beanDefinition = rootBeanDefinition(beanClass).setRole(role).getBeanDefinition(); |
| 170 | + beanFactory.registerBeanDefinition(beanClass.getName(), beanDefinition); |
157 | 171 | return this.processor.processAheadOfTime(RegisteredBean.of(beanFactory, beanClass.getName()));
|
158 | 172 | }
|
159 | 173 |
|
|
0 commit comments