2010-10-15 13 views
6

Estoy buscando una alternativa commons beanutils. La razón es que beanutils se basa en el registro de commons que está en conflicto con las bibliotecas existentes que estoy usando.commons beanutils alternative

Me gustaría una pequeña alternativa independiente que causará conflictos mínimos o nulos.

La principal funcionalidad que estoy buscando es la recuperación de propiedades anidadas.

Gracias de antemano, Steven

Respuesta

1

Terminé escribiendo mis propios mini beanutils para evitar esta dependencia y eliminé commons-beanutils por completo.

El SLF4J no terminó ayudando porque rompió algunas otras dependencias (¡maldito seas, weblogic!).

Mi propia implementación es probablemente más lenta ya que commons-beanutils parece almacenar en caché algunas búsquedas para eliminar algunas llamadas reflexivas.

Msg mí si está interesado en obtener el código fuente de mi implementación.

+2

"Mi propia implementación es probablemente más lenta ya que commons-beanutils" Commons-beanutils es de código abierto. Tal vez solo descargue la fuente y arranque las llamadas al registro de commons.OTOH, tu código probablemente no sea más lento en un grado que haga la diferencia de todos modos. – Thilo

+0

Lo intenté pero terminó tirando en digest y otras cosas también. Acabo de ser un poco demasiado tedioso y mi solución fue muy pequeña y fácil de todos modos. – Steven

1

Usted puede ser capaz de resolver el conflicto con commons-logging mediante el uso de las alternativas commons-logging bridge implementation provided by SFL4j.

Muchas veces, la sustitución de bienes comunes-logging.jar con JCL-sobre-slf4j.jar va a resolver los problemas inmediatamente y de forma permanente cargador de clases relacionadas con el registro de bienes comunes.

+0

Voy a probar esto primero y dejarte saber – Steven

+0

No ayudé, solo causó más problemas de dependencia. – Steven

6

Si bien el manejo de propiedades no es el objetivo principal de Jackson, se puede usar para eso, según this article.

La idea básica es que no solo puede leer/escribir JSON en/desde POJOs, sino también conversiones compatibles, incluida la de "serializar" un POJO como mapa de Java. Como puedes ir y venir entre las representaciones, básicamente obtienes un introspector de frijoles gratis.

Jackson no tiene dependencias externas, pero necesita ambas core (API de transmisión, impls) y jar de mapper (enlace de datos).

0

Si está utilizando Maven, puede excluir la dependencia commons-logging así:

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

que he hecho lo mismo con la primavera, que también requiere commons-logging. De hecho Spring ellos mismos taught me how to exclude it. Por lo que puedo decir, ahora tengo un entorno libre de registro común.

actualización: para algo así como SLF4J/Logback, es posible que también necesite esta en el fichero de configuración:

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

Jodd tiene muy buena colección de bibliotecas, A ver si Jodd BeanUtil ayuda.

+1

Es la "pequeña alternativa autónoma perfecta que causará conflictos mínimos" :) – igr