2009-10-21 10 views
1

Dire que j'ai la définition de haricots suivants:Java, Spring - Connexion Propriétés 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"/> 

Y at-il un moyen d'obtenir du printemps pour se connecter toutes les propriétés qu'il a définies (sans activer verbeux enregistrement pour le printemps dans log4j). Je pensais à quelque chose le long des lignes de ... bavard = "true"

<bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource" verbose="true"> 

Mise à jour

J'utilisé ce qui suit, comme le suggère la réponse:

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; 
    } 
} 

Répondre

2

Non, il n'y a pas une telle facilité. Vous pouvez créer un post-processeur de bean dédié qui enregistre les propriétés du bean cible pour cela.

Questions connexes