您为什么要完全做到这一点?我不确定上下文加载后内部实现是否会保留该信息的记录。但是,有一种方法可以知道从哪个 资源
加载了特定的bean。如果您有多个具有相同名称的bean定义,并且想知道哪个已“获胜”,那将很有用。
拿回您的示例(顺便说一句,您无需实现,
ApplicationContextAware因为您正在自动装配它)
@ContextConfiguration@ContextConfiguration("classpath:spring/sample-testcontext.xml")public class SampleTest { @Autowired private ConfigurableApplicationContext context; @Test public void foo() { ConfigurableListableBeanFactory beanFactory = context.getBeanFactory(); for (String beanName : context.getBeanDefinitionNames()) { System.out.println(beanName + " --> "+ beanFactory.getBeanDefinition(beanName).getResourceDescription()); } }}这给你类似的东西(不包括默认实现可能会自动注册的内部后处理器Bean定义)
beanFirst --> class org.SampleTest$ConfigbeanSecond --> class path resource [foobar.xml]
beanFirst从测试的内部类(称为
Config)
beanSecond中加载了where,并从类
foobar.xml路径的根目录中的文件中加载了。



