2016-09-12 2 views
0

Я пытаюсь поддерживать многопользовательскую схему по схеме в приложении весенней загрузки (1.4). У меня есть следующие в моей конфигурации:У реализации MultiTenantConnectionProvider есть null autowired datasource

hibernate: 
     format_sql: true 
     default_schema: corrto 
     multiTenancy: SCHEMA 
     tenant_identifier_resolver: com.config.HeaderTenantIdentifierResolver 
     multi_tenant_connection_provider: com.config.SchemaPerTenantConnectionProvider 

реализация My MultiTenantConnectionProvider выглядит следующим образом:

public class SchemaPerTenantConnectionProvider implements MultiTenantConnectionProvider { 

    @Autowired 
    private DataSource dataSource; 

    @Override 
    public Connection getAnyConnection() throws SQLException { 
     return this.dataSource.getConnection(); 
    } 

    @Override 
    public void releaseAnyConnection(Connection connection) throws SQLException { 
     connection.close(); 
    } 

    @Override 
    public Connection getConnection(String tenantIdentifier) throws SQLException { 
     final Connection connection = this.getAnyConnection(); 
     // need to do stuff here 
     return connection; 
    } 

    @Override 
    public void releaseConnection(String tenantIdentifier, Connection connection) throws SQLException { 

    } 

    @Override 
    public boolean supportsAggressiveRelease() { 
     return true; 
    } 

    @Override 
    public boolean isUnwrappableAs(Class unwrapType) { 
     return false; 
    } 

    @Override 
    public <T> T unwrap(Class<T> unwrapType) { 
     return null; 
    } 
} 

Это не удается, потому что dataSource равна нулю. Я предполагаю, что он еще не создан, но мне сложно найти решения через Google.

+0

У вас есть источник данных? – Taylor

+1

Не нужно ли 'SchemaPerTenantConnectionProvider' аннотироваться с помощью' @ Component' для того, чтобы быть автоуведомленным? – jny

ответ

0

я встретил тот же problem.It кажется, что в yml, HeaderTenantIdentifierResolver и SchemaPerTenantConnectionProvider управляется hibernate.See here.

Смежные вопросы