2010-11-09 7 views
14

He estado luchando con esto por unas pocas horas.Configuración de transacción para el contexto configurado de Spring Java

Estoy intentando migrar mi configuración Spring XML a una configuración completa basada en Java.

Estoy usando AnnotationConfigApplicationContext como una implementación de contexto.

estoy teniendo problemas para encontrar un equivalente Java para esta línea, desde mi configuración XML antigua:

<tx:annotation-driven transaction-manager="transactionManager" /> 

Como resultado, la primavera no gestiona las transacciones.

En mi configuración de Java he inicializado los beans relevantes para las transacciones: la fábrica de sesiones, el administrador de transacciones, etc., pero sin esa línea, no se utiliza ningún proxy de transacción, por lo que no hay transacciones.

Así que mi pregunta es cómo puedo traducir esa línea a mi configuración de contexto de Java o cómo resolver el problema de otra manera.

Cualquier ayuda es apreciada. Gracias.

Respuesta

2

En mi experiencia, no es práctico reemplazar por completo la configuración XML con @Bean-style config. Algunas cosas tienen más sentido configurarlas en Java, específicamente sus propias definiciones de bean. Pero cuando se trata de declaraciones de tipo infraestructurales como <tx:annotation-driven>, la sintaxis XML es mucho más conciso.

Usted puede reproducir el mismo efecto en Java puro, pero termina siendo engorroso y poco intuitivo, ya que cosas como <tx:annotation-driven> son típicamente interacciones de las clases de infraestructura primavera de bajo nivel complejas que realmente no quieren tocar.

Mi consejo: mezclar y combinar, utilizando cada uno de Java y XML para sus propias fortalezas. Esto es bastante fácil de hacer. Prefiero mantener las clases XML ApplicationContext normales y luego declaro mis clases @Configuration como beans en ese contexto XML, junto con cosas como <tx:annotation-driven>.

+0

¿Todavía se siente así ahora, 4 años más tarde, @skaffman? – GaZ

+1

No, no lo creo. El estilo de anotación es considerablemente más rico en versiones modernas de Spring que en Spring 3. – skaffman

+0

Gracias por la actualización. Eso es lo que sospechaba. Estamos intentando actualizar nuestro código heredado a Spring 4, y como parte de ese proceso, me gustaría eliminar la mayor cantidad posible de nuestra configuración XML (siempre que tenga sentido, por supuesto, pero creo que en la mayoría de los lugares enfoque basado en anotaciones es una mejor opción). – GaZ

Cuestiones relacionadas