|
62 | 62 | import org.springframework.beans.factory.config.BeanDefinition;
|
63 | 63 | import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
|
64 | 64 | import org.springframework.beans.factory.config.TypedStringValue;
|
| 65 | +import org.springframework.beans.factory.support.AbstractBeanDefinition; |
65 | 66 | import org.springframework.beans.factory.support.AutowireCandidateQualifier;
|
66 | 67 | import org.springframework.beans.factory.support.DefaultListableBeanFactory;
|
67 | 68 | import org.springframework.beans.factory.support.GenericBeanDefinition;
|
|
93 | 94 | * @author Sam Brannen
|
94 | 95 | * @author Chris Beams
|
95 | 96 | * @author Stephane Nicoll
|
| 97 | + * @author Yanming Zhou |
96 | 98 | */
|
97 | 99 | class AutowiredAnnotationBeanPostProcessorTests {
|
98 | 100 |
|
@@ -1297,6 +1299,32 @@ void methodInjectionWithMap() {
|
1297 | 1299 | assertThat(bean.getTestBean()).isSameAs(tb);
|
1298 | 1300 | }
|
1299 | 1301 |
|
| 1302 | + @Test |
| 1303 | + void mapInjectionShouldHonorTheSortingOrder() { |
| 1304 | + RootBeanDefinition bd = new RootBeanDefinition(MapMethodInjectionBean.class); |
| 1305 | + bf.registerBeanDefinition("annotatedBean", bd); |
| 1306 | + RootBeanDefinition bd1 = new RootBeanDefinition(); |
| 1307 | + bd1.setBeanClass(TestBean.class); |
| 1308 | + bd1.setAttribute(AbstractBeanDefinition.ORDER_ATTRIBUTE, Ordered.LOWEST_PRECEDENCE); |
| 1309 | + bf.registerBeanDefinition("bean1", bd1); |
| 1310 | + RootBeanDefinition bd2 = new RootBeanDefinition(); |
| 1311 | + bd2.setBeanClass(DerivedTestBean.class); |
| 1312 | + bd2.setAttribute(AbstractBeanDefinition.ORDER_ATTRIBUTE, Ordered.HIGHEST_PRECEDENCE); |
| 1313 | + bd2.setPrimary(true); |
| 1314 | + bf.registerBeanDefinition("bean2", bd2); |
| 1315 | + RootBeanDefinition bd3 = new RootBeanDefinition(); |
| 1316 | + bd3.setBeanClass(TestBean.class); |
| 1317 | + bd3.setAttribute(AbstractBeanDefinition.ORDER_ATTRIBUTE, Ordered.HIGHEST_PRECEDENCE + 1); |
| 1318 | + bf.registerBeanDefinition("bean3", bd3); |
| 1319 | + RootBeanDefinition bd4 = new RootBeanDefinition(); |
| 1320 | + bd4.setBeanClass(TestBean.class); |
| 1321 | + bd4.setAttribute(AbstractBeanDefinition.ORDER_ATTRIBUTE, Ordered.LOWEST_PRECEDENCE - 1); |
| 1322 | + bf.registerBeanDefinition("bean4", bd4); |
| 1323 | + |
| 1324 | + MapMethodInjectionBean bean = bf.getBean("annotatedBean", MapMethodInjectionBean.class); |
| 1325 | + assertThat(bean.getTestBeanMap().keySet()).containsExactly("bean2", "bean3", "bean4", "bean1"); |
| 1326 | + } |
| 1327 | + |
1300 | 1328 | @Test
|
1301 | 1329 | void methodInjectionWithMapAndMultipleMatches() {
|
1302 | 1330 | bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(MapMethodInjectionBean.class));
|
|
0 commit comments