您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在Spring项目中知道从中加载bean的资源。

如何在Spring项目中知道从中加载bean的资源。

您为什么要完全做到这一点?我不确定上下文加载后内部实现是否会保留该信息的记录。但是,有一种方法可以知道从哪个 资源 加载了特定的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$Config
beanSecond --> class path resource [foobar.xml]

beanFirst从测试的内部类(称为ConfigbeanSecond中加载了where,并从类foobar.xml路径的根目录中的文件中加载了。

Java 2022/1/1 18:26:44 有288人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶