Scope annotation in class hierarchies vs XML bean definition inheritance
Issue: SPR-16602
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2015 the original author or authors.
|
||||
* Copyright 2002-2018 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -35,6 +35,12 @@ import org.springframework.core.annotation.AliasFor;
|
||||
* {@link Bean @Bean}, {@code @Scope} indicates the name of a scope to use
|
||||
* for the instance returned from the method.
|
||||
*
|
||||
* <p><b>NOTE:</b> {@code @Scope} annotations are only introspected on the
|
||||
* concrete bean class (for annotated components) or the factory method
|
||||
* (for {@code @Bean} methods). In contrast to XML bean definitions,
|
||||
* there is no notion of bean definition inheritance, and inheritance
|
||||
* hierarchies at the class level are irrelevant for metadata purposes.
|
||||
*
|
||||
* <p>In this context, <em>scope</em> means the lifecycle of an instance,
|
||||
* such as {@code singleton}, {@code prototype}, and so forth. Scopes
|
||||
* provided out of the box in Spring may be referred to using the
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2016 the original author or authors.
|
||||
* Copyright 2002-2018 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -1391,9 +1391,19 @@ public class XmlBeanFactoryTests {
|
||||
DefaultListableBeanFactory xbf = new DefaultListableBeanFactory();
|
||||
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(xbf);
|
||||
reader.loadBeanDefinitions(OVERRIDES_CONTEXT);
|
||||
TestBean jenny = (TestBean) xbf.getBean("jennyChild");
|
||||
assertEquals(1, jenny.getFriends().size());
|
||||
assertTrue(jenny.getFriends().iterator().next() instanceof TestBean);
|
||||
|
||||
TestBean jenny1 = (TestBean) xbf.getBean("jennyChild");
|
||||
assertEquals(1, jenny1.getFriends().size());
|
||||
Object friend1 = jenny1.getFriends().iterator().next();
|
||||
assertTrue(friend1 instanceof TestBean);
|
||||
|
||||
TestBean jenny2 = (TestBean) xbf.getBean("jennyChild");
|
||||
assertEquals(1, jenny2.getFriends().size());
|
||||
Object friend2 = jenny2.getFriends().iterator().next();
|
||||
assertTrue(friend2 instanceof TestBean);
|
||||
|
||||
assertNotSame(jenny1, jenny2);
|
||||
assertNotSame(friend1, friend2);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user