【问题标题】:find which spring context file loaded bean查找哪个spring上下文文件加载了bean
【发布时间】:2012-05-16 18:05:48
【问题描述】:

它是一个大型应用程序,并且有多个由 spring 容器加载的 bean xml 文件。

不知何故,有一个 bean(具有相同的 id)被覆盖。

有没有办法告诉 spring 记录哪个 bean 是从哪个 .xml 文件创建的?

【问题讨论】:

    标签: spring


    【解决方案1】:

    您可以创建一个ReaderEventListener 并记录它们。但是您需要覆盖initBeanDefinitionReader 以将您的Listener 设置为XmlBeanDefinitionReader(我认为没有其他方法,但可能...)。

    例如:

      public class LogReaderEventListener extends EmptyReaderEventListener {
    
        private static final Log log = LogFactory.getLog(LogReaderEventListener.class);
    
        @Override
        public void componentRegistered(ComponentDefinition componentDefinition) {
    
            log.info("Registered Component [" + componentDefinition.getName() + "]");
            for (BeanDefinition bd : componentDefinition.getBeanDefinitions()) {
                String name = bd.getBeanClassName();
    
                if (bd instanceof BeanComponentDefinition) {
                    name = ((BeanComponentDefinition) bd).getBeanName();
                }
                log.info("Registered bean definition: [" + name + "]" + 
                        " from " + bd.getResourceDescription());
            }
        }
    
    
        public static void main (String[] args) {
            ClassPathXmlApplicationContext context = new LogXmlContext("applicationContext.xml");
            context.close();
    
        }
    
    }
    
    class LogXmlContext extends ClassPathXmlApplicationContext {
    
        public LogXmlContext(String configLocation) {
            super(configLocation);
        }
    
        @Override
        protected void initBeanDefinitionReader(XmlBeanDefinitionReader reader) {
            super.initBeanDefinitionReader(reader);
            reader.setEventListener(new LogReaderEventListener());
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-24
      • 1970-01-01
      • 2013-03-12
      相关资源
      最近更新 更多