Dies ist ein Follow-up zu der Frage Making spring-data-mongodb multi-tenant Oliver Gierke erklärt Optionen, wie Multi-Tenancy für eine SpringDataMongo-Anwendung einrichten. Ich folgte seinem "Sammelansatz" und war ziemlich erfolgreich. Bisher. Probleme entstehen, wenn ich die verwendete MongoTemplate anpassen möchte. Werfen Sie einen Blick auf dieses Beispiel:MongoTemplate in MultiTenant Feder Daten Mongo Anwendung
@SpringBootApplication
public class MultiTenantMongoApplication {
public static void main(String[] args) {
SpringApplication.run(MultiTenantMongoApplication.class, args);
}
@Bean
public MongoTemplate mongoTemplate(Mongo mongo, @Value("${random.name}") String randomName) throws Exception {
String dbname = "db_" + randomName;
MongoTemplate mongoTemplate = new MongoTemplate(mongo, dbname) {
@SuppressWarnings("unused")
public void shutdown() {
mongo.dropDatabase(dbname);
}
};
return mongoTemplate;
}
}
@Document(collection="#{tenantProvider.getTenantCollectionName('Metric')}")
public class Metric {
}
@Repository
public interface MetricRepository extends MongoRepository<Metric, ObjectId>{}
@Component
public class TenantProvider {
public String getTenantCollectionName(String collectionName) {
...
}
}
Daraus ergibt sich folgende Fehler:
SpelEvaluationException: EL1007E: Property or field 'tenantProvider' cannot be found on null
Wenn ich die Definition der MongoTemplate Bohne in der Anwendungsklasse alles zu entfernen ist in Ordnung und läuft nach Wunsch. Offensichtlich wird der Property Provider nicht richtig konfiguriert, wenn die MongoTemplate angepasst wird. Warum passiert dies? Und was kann ich tun, um die Immobilie zu erhalten?
Nein, das ändert nichts – Gregor