Java, Spring - свойства объектов ведения журнала - PullRequest
1 голос
/ 21 октября 2009

Скажите, у меня есть следующее определение бина:

<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 регистрировать все установленные им свойства (без включения подробного ведения журнала для Spring в log4j). Я думал о чем-то вроде ... 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;
    }
}

1 Ответ

2 голосов
/ 21 октября 2009

Нет, такого объекта нет. Вы можете создать выделенный постпроцессор бина, который будет регистрировать свойства целевого бина для этого.

...