[SPRING] 다중 임차가있는 스프링 부트 + 스프링 데이터
SPRING다중 임차가있는 스프링 부트 + 스프링 데이터
내 시스템의 각 클라이언트가 자신의 개인 데이터베이스에 연결할 수 있도록 MultiTenantConnectionProvider를 사용하도록 Spring Boot를 구성 할 수 있습니까?
특히 multi-tenancy에 대해 내장 된 최대 절전 모드 지원을 사용하려고합니다.
그리고 이것은 제가 설정 한 일종의 설정의 예제입니다,하지만 스프링 부트 설정에서 이것을 사용하는 방법을 알 수는 없습니다 :
나는 이러한 속성을 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
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 ...
}
};
}
이 중 아무 것도 영향을 미치지 않는 것 같습니다. 그래서 제 질문은 실제로 이러한 다중 테넌트 클래스를 사용하기 위해 spring-boot / spring-data를 얻는 방법입니까?
당신의 도움을 주셔서 감사합니다!
해결법
-
==============================
1.정의되지 않은 JPA / Hibernate의 모든 특성은 application.properties의 spring.jpa.properties 특성을 사용하여 설정할 수 있습니다.
정의되지 않은 JPA / Hibernate의 모든 특성은 application.properties의 spring.jpa.properties 특성을 사용하여 설정할 수 있습니다.
링크 한 샘플에는 멀티 테넌시를위한 3 가지 속성이 있습니다.
<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
최대 절전 모드가 인스턴스의 라이프 사이클을 제어하기 때문에 스프링 관리 Bean과 작동하지 않습니다.
더 많은 프로퍼티에 대해서는 Spring Boot 레퍼런스 가이드를 참조하십시오.
from https://stackoverflow.com/questions/26898896/spring-boot-spring-data-with-multi-tenancy by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 MVC 컨트롤러에서 폼 데이터를 Map으로 얻는 방법은? (0) | 2019.03.15 |
---|---|
[SPRING] ng-file-upload를 사용하여 Spring에서 많은 파일을 업로드하려고 할 때 빈 목록 <MultipartFile> (0) | 2019.03.15 |
[SPRING] 사용자 지정 인증 공급자가 호출되지 않음 (0) | 2019.03.15 |
[SPRING] 문자 인코딩 문제 스프링 (0) | 2019.03.15 |
[SPRING] 스프링 부트 유효성 검사 메시지가 해결되지 않습니다. (0) | 2019.03.14 |