2010-10-15 23 views
6

Je cherche un commons beanutils alternative. La raison en est que beanutils s'appuie sur la journalisation des communs qui est en conflit avec les bibliothèques existantes que j'utilise.commons beanutils alternative

Je voudrais une petite alternative autonome qui ne causera pas de conflits minimes.

La fonctionnalité principale que je recherche est la récupération de propriétés imbriquées.

Merci à l'avance, Steven

Répondre

1

J'ai fini d'écrire mes propres mini beanutils pour contourner cette dépendance et j'ai complètement supprimé commons-beanutils.

La SLF4J n'a pas fini par aider car elle a cassé d'autres dépendances (putain weblogic!).

Ma propre implémentation est probablement plus lente car le commons-beanutils semble mettre en cache certaines extractions pour supprimer certains appels réfléchissants. Si vous souhaitez obtenir le code source de ma mise en œuvre, veuillez me contacter.

+2

"Ma propre implémentation est probablement plus lente depuis les communes-beanutils" Commons-beanutils est open-source. Peut-être que vous venez de télécharger la source, et déchirer les appels à la journalisation des communs.OTOH, votre code n'est probablement pas plus lent à un degré qui fait toute différence de toute façon. – Thilo

+0

J'ai essayé ça mais ça a fini par attirer l'attention et d'autres choses aussi. Juste un peu trop ennuyeux et ma solution était très petite et facile de toute façon. – Steven

1

Vous pouvez être en mesure de résoudre le conflit avec commons-logging en utilisant les commons-logging de remplacement bridge implementation provided by SFL4j. Le remplacement de commons-logging.jar par jcl-over-slf4j.jar résoudra souvent et de façon permanente les problèmes de chargeur de classe liés à la journalisation des communs.

+0

Je vais donner un coup d'abord et vous faire savoir – Steven

+0

N'a pas aidé, juste causé plus de problèmes de dépendance. – Steven

6

Bien que la gestion des propriétés ne soit pas l'objectif principal de Jackson, elle peut être utilisée pour cela, conformément à this article. L'idée de base est que vous pouvez non seulement lire/écrire des JSON depuis/vers des POJO, mais aussi effectuer des conversions compatibles: y compris celle de "sérialiser" un POJO en tant que Java Map. Puisque vous pouvez aller et venir entre les représentations, vous obtenez essentiellement un introspector bean gratuitement.

Jackson n'a pas de dépendances externes, mais vous avez besoin à la fois de core (api de diffusion, impls) et de mapper mapper (liaison de données).

0

Si vous utilisez Maven, vous pouvez exclure comme cette dépendance commons-forestière:

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

Je l'ai fait la même chose avec le printemps, ce qui nécessite également commons-logging. En fait, le printemps eux-mêmes taught me how to exclude it. Pour autant que je sache, j'ai maintenant un environnement sans journalisation.

Mise à jour: quelque chose comme SLF4J/Logback, vous pouvez aussi avoir besoin dans votre fichier de configuration:

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

Jodd a une très bonne collection de bibliothèques, voir si Jodd BeanUtil aide.

+1

C'est parfait 'petite alternative autonome qui causera pas de conflits/minime' :) – igr