|
37 | 37 | import org.springframework.aot.hint.predicate.RuntimeHintsPredicates;
|
38 | 38 | import org.springframework.aot.test.generate.TestGenerationContext;
|
39 | 39 | import org.springframework.beans.factory.aot.BeanRegistrationAotContribution;
|
| 40 | +import org.springframework.beans.factory.config.BeanDefinition; |
40 | 41 | import org.springframework.beans.factory.support.DefaultListableBeanFactory;
|
41 | 42 | import org.springframework.beans.factory.support.RegisteredBean;
|
42 |
| -import org.springframework.beans.factory.support.RootBeanDefinition; |
43 | 43 | import org.springframework.core.OverridingClassLoader;
|
44 | 44 | import org.springframework.lang.Nullable;
|
45 | 45 |
|
|
52 | 52 | import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
53 | 53 | import static org.assertj.core.api.Assertions.assertThat;
|
54 | 54 | import static org.mockito.Mockito.mock;
|
| 55 | +import static org.springframework.beans.factory.config.BeanDefinition.ROLE_APPLICATION; |
| 56 | +import static org.springframework.beans.factory.config.BeanDefinition.ROLE_INFRASTRUCTURE; |
| 57 | +import static org.springframework.beans.factory.support.BeanDefinitionBuilder.rootBeanDefinition; |
55 | 58 |
|
56 | 59 | /**
|
57 | 60 | * Tests for {@link BeanValidationBeanRegistrationAotProcessor}.
|
@@ -130,17 +133,28 @@ void shouldSkipConstraintWithMissingDependency() throws Exception {
|
130 | 133 | assertThat(this.generationContext.getRuntimeHints().reflection().typeHints()).isEmpty();
|
131 | 134 | }
|
132 | 135 |
|
| 136 | + @Test // gh-33940 |
| 137 | + void shouldSkipInfrastructureBean() { |
| 138 | + process(EmptyClass.class, ROLE_INFRASTRUCTURE); |
| 139 | + assertThat(this.generationContext.getRuntimeHints().reflection().typeHints()).isEmpty(); |
| 140 | + } |
| 141 | + |
133 | 142 | private void process(Class<?> beanClass) {
|
134 |
| - BeanRegistrationAotContribution contribution = createContribution(beanClass); |
| 143 | + process(beanClass, ROLE_APPLICATION); |
| 144 | + } |
| 145 | + |
| 146 | + private void process(Class<?> beanClass, int role) { |
| 147 | + BeanRegistrationAotContribution contribution = createContribution(beanClass, role); |
135 | 148 | if (contribution != null) {
|
136 | 149 | contribution.applyTo(this.generationContext, mock());
|
137 | 150 | }
|
138 | 151 | }
|
139 | 152 |
|
140 | 153 | @Nullable
|
141 |
| - private BeanRegistrationAotContribution createContribution(Class<?> beanClass) { |
| 154 | + private BeanRegistrationAotContribution createContribution(Class<?> beanClass, int role) { |
142 | 155 | DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
|
143 |
| - beanFactory.registerBeanDefinition(beanClass.getName(), new RootBeanDefinition(beanClass)); |
| 156 | + BeanDefinition beanDefinition = rootBeanDefinition(beanClass).setRole(role).getBeanDefinition(); |
| 157 | + beanFactory.registerBeanDefinition(beanClass.getName(), beanDefinition); |
144 | 158 | return this.processor.processAheadOfTime(RegisteredBean.of(beanFactory, beanClass.getName()));
|
145 | 159 | }
|
146 | 160 |
|
|
0 commit comments