0

에서 제외됩니다 때 부팅 응용 프로그램에서 멀티 테넌시 (multi-tenancy)를 구현 한 내가 @SpringBootApplication에서 DatasourceAutoconfiguration.class을 제외한이를 위해 아래의 링크 https://dzone.com/articles/spring-boot-hibernate-multitenancy-implementation어떻게 spring.datasource를 삽입합니다. * 속성을 DataSourceAutoConfiguration.class가 자동

에 따라 like

@SpringBootApplication(
    exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class}) 
@EnableScheduling 
@EnableJpaRepositories 
@EnableAspectJAutoProxy(proxyTargetClass = true) 
@ComponentScan("com.mps") 
public class MpsServiceClientApplication { 

문제는 어떻게 사용자 정의 데이터 소스에 spring.datasource.tomcat.*과 같은 속성을 주입합니까? 좀 더 정확히 말하면 아래에 언급 된 2 가지 속성을 사용자 정의 데이터 소스에 어떻게 설정합니까?

spring.datasource.test-while-idle=true 
spring.datasource.test-on-borrow=true 

이것은 jpa 속성을 설정하는 방법입니다.

final Map<String, Object> hibernateProps = new LinkedHashMap<>(); 
hibernateProps.putAll(this.jpaProperties.getProperties()); 
final LocalContainerEntityManagerFactoryBean result = 
     new LocalContainerEntityManagerFactoryBean(); 
result.setJpaVendorAdapter(new HibernateJpaVendorAdapter()); 
result.setJpaPropertyMap(hibernateProps); 

답변

1

수동으로 톰캣 데이터 소스를 만드는 동안 @Configuration 콩으로 이러한 속성을 주입하고 설정해야합니다 :

import org.apache.tomcat.jdbc.pool.DataSource; 

@Value("${spring.datasource.test-on-borrow}") 
private boolean testWhileIdle; 
@Value("${spring.datasource.test-while-idle}") 
private boolean testOnBorrow; 

@Bean 
public DataSource dataSource(){ 
    DataSource dataSource = new DataSource(); 
    dataSource.setTestOnBorrow(testOnBorrow); 
    dataSource.setTestWhileIdle(testWhileIdle); 
    ... 
    return dataSource; 
}