tenant multi example abstractroutingdatasource design spring architecture java-ee multi-tenant

design - multi - abstractroutingdatasource spring boot



Anulando el bean definido en el contexto principal en un contexto secundario (1)

Spring le permite redefinir el mismo nombre de bean varias veces, y toma la última definición de bean procesada para un nombre dado para que gane. Entonces, por ejemplo, podría tener un archivo XML que defina sus beans centrales e importarlos en un archivo XML específico del cliente, que también redefine algunos de esos beans. Sin embargo, es un poco frágil, ya que no hay un mecanismo para decir específicamente "esta definición de frijol es una anulación".

Descubrí que la forma más limpia de manejar esto es usar la nueva @Bean -syntax presentada en Spring 3 . En lugar de definir beans como XML, los define en Java. Por lo tanto, sus beans centrales se definirían en una clase @Bean -annotated, y las configuraciones de su cliente harían una subclase que anularía los beans apropiados. Esto le permite usar anotaciones java @Override estándar, indicando explícitamente que una definición dada de bean está siendo anulada.

Nuestra aplicación tiene un requisito para admitir multi-tenancy. Cada uno de los clientes abordados podría anular uno o más beans o algunas propiedades de un bean definidas en el nivel de la plataforma central (códigos / definiciones comunes). Me pregunto cuál es la mejor manera de manejar esto.