9 Mayıs 2018 Çarşamba

SpringData MongoDB @EnableMongoRepositories Anotasyonu

Giriş
Eğer MongoRepository sınıfı @SpringBoot anotasyonu ile aynı veya alt paketteyse bu anotasyonu tanımlamaya gerek yok. Spring bir şekilde MongoDB kullanıldığını anlıyor.

Eğer MongoRepository farklı bir pakettteyse basePackages alanı ile MongoRepository sınıflarını belirtmek gerekiyor.

basePackages Alanı
Şöyle yaparız.
@EnableMongoRepositories(mongoTemplateRef = "mongoBOTemplate",
  basePackages = "sandbox.dao.bo")
includeFilters Alanı
basePackages ile taranan paketlerdeki MongoRepository sınıflarından hangilerinin dahil edileceğini belirtir. Filtre olarak bir anotasyon kullanılabilir.
Örnek
Şöyle yaparız. Burada sadece @SharedCollection anotasyonu, bu anotasyona sahip bir repository ve bu repository'nin nasıl seçileceği gösteriliyor.
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface SharedCollection {
}

@SharedCollection
public interface PlanetRepository extends MongoRepository<Planet,String> {
}

@Configuration
@EnableMongoRepositories(basePackages = {"com"},
  includeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION,
value = SharedCollection.class),
  mongoTemplateRef = "mongoTemplateShared"
)
public class SharedMongoConfig {

}
mongoTemplateRef Alanı
Bu alan hangi MongoTemplate bean'inin kullanılacağını belirtir. MongoTemplate kendi içine bir tane MongoDatabaseFactory nesnesi alır. MongoDatabaseFactory veritabanına bağlantı için gerekli bilgileri içerir. Bu alanı kullanarak multi-tenant uygulamalar yapmak mümkün. Böylece basePackages altındaki taranan MongoRepository sınıfları MongoDatabaseFactory ile belirtilen veri tabanına yazılır  

Hiç yorum yok:

Yorum Gönder