0
这是后续问题Making spring-data-mongodb multi-tenant Oliver Gierke解释了如何为SpringDataMongo应用程序设置多租户的选项。我遵循他的“收集方法”,并且非常成功。至今。出现问题时,我想自定义使用的MongoTemplate。对此例子看看:MultiTenant Spring Data Mongo应用程序中的MongoTemplate
@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) {
...
}
}
我们得到以下错误:
SpelEvaluationException: EL1007E: Property or field 'tenantProvider' cannot be found on null
当我删除应用程序类的一切MongoTemplate bean的定义是罚款和运行任意的。 当MongoTemplate被自定义时,显然属性提供者得不到适当的配置。这是为什么发生?我能做些什么来获得财产?
不,不会改变一件事 – Gregor