Red de conocimiento informático - Problemas con los teléfonos móviles - Código fuente de la capa de servicio

Código fuente de la capa de servicio

Estoy de acuerdo con los hermanos en la capa 1: la lógica empresarial debe ser manejada por los servicios. La razón más fundamental por la que necesita abrir transacciones en acciones es que hay un problema con el diseño de API de su capa de componentes. Si se supone que no debe manejar la ejecución de código de lógica empresarial, deberá adaptar varios servicios para lograr esa funcionalidad. De hecho, es un negocio. Sin embargo, existe una manera de abrir transacciones manualmente en una actividad sin colocar la actividad en Spring Hosting como se indica en la capa 1. El siguiente es el código que escribí antes para resolver el problema de transacciones del sistema heredado. Puede consultarlo y probarlo:

Interfaz pública ITransactionManager {

/**

*Este método requiere control de transacciones.

* @return

* @throw excepción

*/

El objeto doInTransaction() lanza una excepción;

}

Clase pública DataSourceTransactionUtil {

Ejecución de objeto público (administrador de transacciones ITransactionManager final){

DataSourceTransactionManager DataSourceTransactionManager = getDataSourceTransactionManager();

plantilla de transacción plantilla de transacción = nueva plantilla de transacción (fuente de datostransactionmanager);

devolver plantilla de transacción ejecutar(nueva devolución de llamada de transacción(){

Objeto público doInTransaction(estado de transacción estado de transacción) {

Punto de guardado del objeto = estado de la transacción. Createsavepoint();

Resultado del objeto = nulo

Pruebe {

resultado = administrador de transacciones. . dointransaction();

} catch(excepción e){

estado de transacción . rollbacktosavepoint(savepoint);

e . >

p>

}Finalmente {

estado de la transacción. Liberar punto de guardado (punto de guardado)

}

Devolver resultado; p>

}

});

}

Fuente de datos privadostransactionmanager getDataSourceTransactionManager(){

return(DataSourceTransactionManager)get bean(" administrador de transacciones ");

}

}

Explicación:

Recuerdo haber escrito este párrafo después de leer la fuente de primavera. código.

1. get bean ("administrador de transacciones"); es decir, obtenga el bean del administrador de transacciones de Spring y cambie el nombre usted mismo.

2. Coloque este código en su BaseAction:

Objeto protegido comenzar transacción(ITransactionManager transactionManagerImpl){

fuente de datostransactionutil dt = nueva fuente de datostransactionutil( );

Return dt.execut(transactionManagerImpl);

}

3. En la operación que necesita abrir una transacción, llame al método beginTransaction transactionManagerImpl. Escribe una clase interna anónima y luego implementa el método doInTransaction(). En doInTransaction(), escriba su código para llamar a múltiples servicios.