如何知道某些bean配置的加载位置?

时间:2018-01-30 05:28:35

标签: spring dependency-injection ioc-container

我正在编写一个程序来检查学生提交的源代码是否符合练习说明中给出的所有要求。

现在,如果必须从XML文件配置某些bean,如何在不解析XML配置文件的情况下检查它?我可以在运行时从spring容器中获取相关信息吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

bean的来源如下:

BeanDefinition beanDefinition = context.getBeanDefinition("someBean");
beanDefinition.getResourceDescription();  // Will describe if the XML file is the source

示例:

  1. 为了清晰起见而删除的XML文件,名为 app-config.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans ...>
        <bean name="someBean" class="com.stackoverflow.aopdemo.service.StudentImpl" 
    />
    </beans>
    
  2. 显示用法的骨架程序:

    @SpringBootApplication
    @ImportResource("classpath:app-config.xml") 
    public class DemoApplication {
    
       @Autowired
       private AnnotationConfigApplicationContext context;
    
        public static void main(String[] args) {
            SpringApplication.run(DemoApplication.class, args);
        }
    
        @PostConstruct
        public void init() {
           BeanDefinition beanDefinition = context.getBeanDefinition("someBean");
           String resourceDescription = beanDefinition.getResourceDescription();
           System.out.println("Resource Description = "+resourceDescription);
        }
    }
    
  3. 生成以下输出(显示xml文件名):

    Resource Description = class path resource [app-config.xml]