2010-10-15 14 views
6

Sto cercando un'alternativa di beanutils. La ragione è che beanutils si basa sulla registrazione delle risorse comuni che è in conflitto con le librerie esistenti che sto usando.commons beanutils alternative

Vorrei una piccola alternativa autonoma che non causi conflitti minimi/minimi.

La funzionalità principale che sto cercando è il recupero delle proprietà nidificate.

Grazie in anticipo, Steven

risposta

1

Si è interrotto a scrivere i miei mini beanutils per aggirare questa dipendenza e rimuovere completamente commons-beanutils.

L'SLF4J non ha finito per aiutare poiché ha rotto alcune altre dipendenze (dannazione you weblogic!).

La mia implementazione è probabilmente più lenta dal momento che il comando commons-beanutils sembra memorizzare alcuni recuperi in cache per rimuovere alcune chiamate riflessive.

Msg me se siete interessati a ottenere il codice sorgente della mia implementazione.

+2

"La mia stessa implementazione è probabilmente più lenta dal momento che il common-beanutils" Commons-beanutils è open-source. Forse basta scaricare la fonte e strappare le chiamate alla registrazione dei comuni.OTOH, il tuo codice non è probabilmente più lento di un livello che fa comunque la differenza. – Thilo

+0

L'ho provato, ma alla fine è stato anche il digest e altre cose. Sono diventato un po 'troppo noioso e la mia soluzione è stata comunque molto piccola e facile. – Steven

1

Si può essere in grado di risolvere il conflitto con commons-logging utilizzando le alterne commons-logging bridge implementation provided by SFL4j.

Spesso, la sostituzione di commons-logging.jar con jcl-over-slf4j.jar risolverà immediatamente e in modo permanente i problemi del caricatore di classi relativi alla registrazione dei comuni.

+0

Darò questa prima cosa e ti faccio sapere – Steven

+0

Non ha aiutato, ha solo causato più problemi di dipendenza. – Steven

6

Mentre la gestione delle proprietà non è l'obiettivo principale di Jackson, può essere utilizzato per quello, come da this article.

L'idea di base è che non si può solo leggere/scrivere JSON per/da POJO, ma anche fare conversioni compatibili: inclusa quella di "serializzare" un POJO come una mappa Java. Dal momento che puoi andare avanti e indietro tra le rappresentazioni, in pratica ottieni gratuitamente un introspettore di fagioli.

Jackson non ha dipendenze esterne, ma è necessario sia core (streaming api, impls) e jar mapper (associazione dati).

0

Se si utilizza Maven, è possibile escludere la dipendenza commons-logging in questo modo:

<dependency> 
    <groupId>commons-beanutils</groupId> 
    <artifactId>commons-beanutils</artifactId> 
    <version>1.8.3</version> 
    <exclusions> 
     <exclusion> 
      <groupId>commons-logging</groupId> 
      <artifactId>commons-logging</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency> 

che ho fatto lo stesso con la Primavera, che richiede anche commons-logging. In effetti Spring stessi taught me how to exclude it. Per quello che posso dire, ora ho un ambiente privo di registrazione per i comuni.

Aggiornamento: per qualcosa come SLF4J/Logback, si può anche bisogno di questo nel file di configurazione:

<logger name="org.apache.commons" level="OFF" /> 
4

Jodd ha molto buona collezione di librerie, Vedere se Jodd BeanUtil aiuta.

+1

È la perfetta 'piccola alternativa autonoma che non causerà conflitti/minimi' :) – igr