代码之家  ›  专栏  ›  技术社区  ›  Joel

JavaSpring日志bean属性

  •  1
  • Joel  · 技术社区  · 16 年前

    假设我有以下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=“真”

    <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;
        }
    }
    
    1 回复  |  直到 16 年前
        1
  •  2
  •   denis.zhdanov    16 年前

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