2
它是一個很大的應用程序,並且有多個由spring容器加載的bean xml文件。找到哪個spring上下文文件加載bean
有一個bean(具有相同的id),它以某種方式被覆蓋。
反正是有辦法告訴春天要記錄的豆創建從.xml文件?
它是一個很大的應用程序,並且有多個由spring容器加載的bean xml文件。找到哪個spring上下文文件加載bean
有一個bean(具有相同的id),它以某種方式被覆蓋。
反正是有辦法告訴春天要記錄的豆創建從.xml文件?
您可以創建一個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());
}
}
有趣....會檢查這種方法 –
不,我不這麼認爲。 – skaffman