【发布时间】:2009-10-21 17:31:42
【问题描述】:
假设我有以下 bean 定义:
<bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="maxActive" value="50"/>
<property name="maxIdle" value="5"/>
有没有办法让 Spring 记录它设置的所有属性(而不在 log4j 中为 Spring 启用详细日志记录)。我正在考虑类似... verbose="true"
<bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource" verbose="true">
更新
按照答案中的建议,我使用了以下内容:
public class SpringBeanLoggingPostProcessor implements BeanPostProcessor {
private static final Logger log = Logger.getLogger(SpringBeanLoggingPostProcessor.class);
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
if (bean.getClass() == org.apache.commons.dbcp.BasicDataSource.class) {
BasicDataSource ds = (BasicDataSource) bean;
log.info("url="+ds.getUrl());
log.info("username="+ds.getUsername());
}
return bean;
}
@Override
public Object postProcessBeforeInitialization(Object bean, String arg1) throws BeansException {
return bean;
}
}
【问题讨论】: