java– 如何知道在spring项目中加载bean的资源.

java– 如何知道在spring项目中加载bean的资源.,第1张

概述我是Spring框架的新手.我想知道加载bean时引用的xml文件列表.通过编写ApplicationContextAware类,我可以查看bean列表:@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration('classpath:spring/sample-testcontext.xml'

我是Spring框架的新手.我想知道加载bean时引用的xml文件列表.

通过编写ApplicationContextAware类,我可以查看bean列表:

@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration("classpath:spring/sample-testcontext.xml")public class SampleClass implements ApplicationContextAware {    @autowired    ApplicationContext applicationContext;    @Test    public voID testMethod() {        for (String beanname : applicationContext.getBeanDeFinitionnames()) {            System.out.println("Beanname " + beanname);        }    }}

但我想知道bean的加载配置文件.

说“sample-testcontext.xml”包含

我想知道加载bean的文件名列表为“sample-testOneMorecontext.xml”和“sample-testcontext.xml”.最佳答案你为什么要这样做呢?我不确定内部实现是否在上下文加载后保留了该信息的记录.但是,有一种方法可以知道特定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是从类路径根目录中名为foobar.xml的文件加载的. 总结

以上是内存溢出为你收集整理的java – 如何知道在spring项目中加载bean的资源.全部内容,希望文章能够帮你解决java – 如何知道在spring项目中加载bean的资源.所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1267270.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)