2012-05-16 4 views
2

큰 응용 프로그램이며 스프링 컨테이너에 의해로드되는 여러 bean xml 파일이 있습니다.로드 된 스프링 컨텍스트 파일을 찾으십시오.

어떻게 든 무시되고 (동일한 ID를 가진) 한 콩이 있습니다.

어쨌든있는 .xml 파일을 만든 콩 로그인하는 봄을 말할 수있는 방법이 있습니까?

+0

아니, 난 그렇게 생각하지 않습니다. – skaffman

답변

1

당신은 ReaderEventListener를 작성하고이를 기록 할 수 있습니다. 하지만 을 XmlBeanDefinitionReader에 설정하려면 initBeanDefinitionReader을 재정의해야합니다 (다른 방법은 없지만 ... 일 수 있음). 예를 들어

:

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()); 
    } 

} 
+0

흥미 롭습니다.이 접근법을 점검 할 것입니다. –

관련 문제