La siguiente sección define las configuraciones que se deben tener presente en el desarrollo de los microservicios de la fábrica de desarrollo para el acceso a las bases de datos y al dominio de clases y entidades comunes.
En la arquitectura propuesta es muy común que existan microservicios que proveen información y otros que la procesan, por esta razon hace necesario el conocimiento de las estructuras en las cuales se transportan los datos ya que en muchos escenarios persisten en el sistema. Teniendo presente esta situación recurrente se crea un domino de clases y entidades comunes (proyecto spring) donde se van a registrar todas la entidades que puedan ser requeridas por microservicios. A ontinuación se definen las reglas a considerar para incluir una entidad. Consultar Guía de Desarrollo
Todo microservicio que realice persistencia de datos o que consuma servicios que devuelvan entidades debe incluir en su archivo de configuración Maven POM1) la dependencia del proyecto del Dominio de clases y entidades Comunes el cual se describe a continuación:
<dependency> <groupId>co.ada.models</groupId> <artifactId>ModelsClassesADA</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency>
El desarrollador debe utilizar la versión más reciente del proyecto la cual puede ser consultada en la sección Versionamiento de APIs
Para usar el Dominio de Clases de Entidades Comunes siga los siguientes pasos:
@EntityScan({"array de clases o paquetes"})
con las clases o paquetes que desea utilizar.
Para implementar el soporte de bases de datos realice lso siguientes pasos:
Registre la dependencia actualizada del Dominio de Clases de Entidades Comunes.
cree un paquete llamado dbconnect
Cree el datasource interceptor como se muestra continuación.
package co.ada.test.microservice.prueba.dbconnect; import org.springframework.stereotype.Component; import co.ada.db.config.DataSourceInterceptor; @Component public class MyDataSourceInterceptor extends DataSourceInterceptor {}
Cree la clase de configuración como se muestra continuación.
package co.ada.test.microservice.prueba.dbconnect; import org.springframework.context.annotation.Configuration; import co.ada.db.config.WebConfig; @Configuration public class MyWebConfig extends WebConfig {}
Cree la clase de configuración de repositorio teniendo presente el siguiente ejemplo:
package co.ada.test.microservice.prueba.dbconnect; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.orm.jpa.JpaTransactionManager; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; import org.springframework.transaction.annotation.EnableTransactionManagement; import co.ada.db.config.DataSourceConfigBase; import co.ada.db.config.IDataSourceConfig; @Configuration @EnableJpaRepositories( basePackages = "co.ada.test.microservice.prueba.repo",//Ver Nota 1 transactionManagerRef = "transcationManager", entityManagerFactoryRef = "entityManager") @EnableTransactionManagement public class MyDataSourceConfig extends DataSourceConfigBase { @Bean(name = "entityManager") public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean(EntityManagerFactoryBuilder builder) { return builder.dataSource(dataSource()).packages("co.ada.models.microservicio.usuario").build();//Ver Nota 2 } @Bean(name = "transcationManager") public JpaTransactionManager transactionManager(@Autowired @Qualifier("entityManager") LocalContainerEntityManagerFactoryBean entityManagerFactoryBean) { return new JpaTransactionManager(entityManagerFactoryBean.getObject()); } }
Registre el paquete local donde tiene los repositorios / dao de acceso a datos.
Registre el paquete de entidades del Dominio de Clases de Entidades Comunes que utilizará con los repositorio.
Se define en el Dominio de Clases de Entidades Comunes el repositorio estandar para acceso a datos el cual debe ser utilizado en todos los microservicios que requieran esa funcionalidad. El repositorio esta ubica en el paquete co.ada.db.config.repository y contiene la clase que a continuación se describe:
package co.ada.db.config.repository; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @Repository public interface JpaAdaRepository<T, ID> extends JpaRepository<T, ID> {}