IT

스프링 부트 + 멀티 테넌시(Multi-tenancy)가 포함된 스프링 데이터

itgroup 2023. 8. 16. 22:08
반응형

스프링 부트 + 멀티 테넌시(Multi-tenancy)가 포함된 스프링 데이터

시스템의 각 클라이언트가 자체 개인 데이터베이스에 연결할 수 있도록 MultiTenant Connection Provider를 사용하도록 Spring Boot를 구성할 수 있습니까?

특히 멀티 테넌시(Multi-tenancy)에 대한 내장 최대 절전 모드 지원을 사용하려고 합니다.

다음은 제가 추구하는 구성의 예입니다. 하지만 Spring Boot 설정에서 이 기능을 사용하는 방법을 알 수 없습니다.

이 속성을 에 추가해 보았습니다.application.properties:

spring.jpa.hibernate.multiTenancy=DATABASE
spring.jpa.hibernate.tenant_identifier_resolver=com.mystuff.MyCurrentTenantIdentifierResolver
spring.jpa.hibernate.multi_tenant_connection_provider=com.mystuff.MyMultiTenantConnectionProviderImplX

저는 또한 제 자신의 코드를 작성해 보았습니다.CurrentTenantIdentifierResolver그리고.MultiTenantConnectionProvider그리고 내 메인 @Configuration bean에서 이것들을 제공해 보았습니다.

@Bean
public CurrentTenantIdentifierResolver currentTenantIdentifierResolver() {
    return new CurrentTenantIdentifierResolver() {
        public String resolveCurrentTenantIdentifier() {
            // this is never called ...
        }
        public boolean validateExistingCurrentSessions() {
            // this is never called ...
        }
    };
}

@Bean
public MultiTenantConnectionProvider multiTenantConnectionProvider() {
    return new AbstractMultiTenantConnectionProvider() {
        protected ConnectionProvider getAnyConnectionProvider() {
            // this is never called ...
        }
        protected ConnectionProvider selectConnectionProvider(String s) {
            // this is never called ...
        }
    };
}

이 중 어떤 것도 영향을 미치지 않는 것 같습니다. 따라서 이러한 멀티 테넌트(Multi-tenant) 클래스를 사용하기 위해 spring-boot/spring-data를 가져오는 방법이 정말 문제입니다.

도와주셔서 감사합니다!

정의되지 않은 JPA/Hibernate 속성은 다음을 사용하여 설정할 수 있습니다.spring.jpa.properties의 재산.application.properties.

연결하는 샘플에는 멀티테넌시(Multi-tenancy)에 대한 세 가지 속성이 있습니다.

<prop key="hibernate.multiTenancy">SCHEMA</prop>
<prop key="hibernate.tenant_identifier_resolver">com.webapp.persistence.utility.CurrentTenantContextIdentifierResolver</prop>
<prop key="hibernate.multi_tenant_connection_provider">com.webapp.persistence.utility.MultiTenantContextConnectionProvider</prop>

Spring Boot로 변환된 속성은 다음과 같습니다.application.properties파일.

spring.jpa.properties.hibernate.multiTenancy=SCHEMA
spring.jpa.properties.hibernate.tenant_identifier_resolver=com.mystuff.MyCurrentTenantIdentifierResolver
spring.jpa.properties.hibernate.multi_tenant_connection_provider=com.webapp.persistence.utility.MultiTenantContextConnectionProvider

귀하의 상황에 맞게(질문에 명시된 바와 같이).

spring.jpa.properties.hibernate.multiTenancy=DATABASE
spring.jpa.properties.hibernate.tenant_identifier_resolver=com.webapp.persistence.utility.CurrentTenantContextIdentifierResolver 
spring.jpa.properties.hibernate.multi_tenant_connection_provider=com.mystuff.MyMultiTenantConnectionProviderImplX

최대 절전 모드가 해당 인스턴스의 수명 주기를 제어하기 때문에 스프링 관리 콩에서는 작동하지 않습니다.

자세한 속성은 Spring Boot 참조 가이드를 참조하십시오.

언급URL : https://stackoverflow.com/questions/26898896/spring-boot-spring-data-with-multi-tenancy

반응형