【问题标题】:Java, Spring - Logging Bean PropertiesJava,Spring - 记录 Bean 属性
【发布时间】: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;
    }
}

【问题讨论】:

    标签: java spring logging


    【解决方案1】:

    不,没有这样的设施。您可以创建一个专用的 bean 后处理器来记录目标 bean 的属性。

    【讨论】:

      猜你喜欢
      • 2013-05-18
      • 1970-01-01
      • 2011-09-09
      • 2015-09-10
      • 2016-07-19
      • 2011-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多