21 Aralık 2018 Cuma

SpringData Rest RepositoryRestConfigurerAdapter Sınıfı - Deprecated

Giriş
Şu satırı dahil ederiz.
import org.springframework.data.rest.webmvc.config.RepositoryRestConfigurerAdapter;
Bu sınıf gelmeden önce aynı işi RepositoryRestMvcConfiguration sınıfı kullanılıyordu. Bu sınıf deprecate edildi.Yerine  RepositoryRestConfigurer arayüzünden kalıtan bir sınıf kullanılabilir.

configureRepositoryRestConfiguration metodu
Global @CrossOrigin anotasyonu atamak için kullanılır. Bu metod  Spring Data REST 2.6 (Ingalls)'dan itibaren var.

Örnek
RepositoryCorsRegistry nesnesi döner. Şöyle yaparız.
@Override
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
  config.getCorsRegistry()
    .addMapping("/**")
    .allowedOrigins("*")
    .allowedHeaders("*")
    .allowedMethods("*");
}
configureValidatingRepositoryEventListener metodu
Validator atamaya imkan verir. Açıklaması şöyle.
There are two ways to register a Validator instance in Spring Data REST: wire it by bean name or register the validator manually. For the majority of cases, the simple bean name prefix style will be sufficient.
8 tane REST event var.
BeforeCreateEvent
AfterCreateEvent
BeforeSaveEvent
AfterSaveEvent
BeforeLinkSaveEvent
AfterLinkSaveEvent
BeforeDeleteEvent
AfterDeleteEvent

beforeCreateX, afterCreateX bean'leri HTTP POST içindir.
beforeSaveX, afterSaveX bean'leri HTTP PUT ve PATCH içindir.

Kod İçinde Anotasyon Varsa
Sadece JSR-303 anotasyonlarını kontrol etmek istersek şöyle yaparız.
Örnek
Şöyle yaparız
@Bean
public Validator validator() {
  return new LocalValidatorFactoryBean();
}

@Override
public void configureValidatingRepositoryEventListener(ValidatingRepositoryEventListener
  validatingListener) {
  validatingListener.addValidator("afterCreate", validator());
  validatingListener.addValidator("beforeCreate", validator());
  validatingListener.addValidator("afterSave", validator());
  validatingListener.addValidator("beforeSave", validator());
}
Özel Bir Kontrol Yapmak İstersek
Sadece JSR-303 anotasyonu değil özel bir kontrol de yapmak istersek Validator arayüzünden kalıtan ve ismi beforeCreateX gibi başlayan bir bean kodlamak gerekir. Açıklaması şöyle.
In order to tell Spring Data REST you want a particular Validator assigned to a particular event, you simply prefix the bean name with the event you're interested in. For example, to validate instances of the Person class before new ones are saved into the repository, you would declare an instance of a Validator<Person> in your ApplicationContext with the bean name "beforeCreatePersonValidator". Since the prefix "beforeCreate" matches a known Spring Data REST event, that validator will be wired to the correct event.

Örnek
Şöyle yaparız.
@Bean
public PeopleValidator beforeCreatePeopleValidator() {
  return new PeopleValidator();
}
Örnek
Company nesnesi için validator eklemeyi şöyle yaparız.
@Bean
//the bean name starting with beforeCreate will result into registering the validator
 before insert
public BeforeCreateCompanyValidator beforeCreateCompanyValidator() {
  return new BeforeCreateCompanyValidator();
}

@Override
public void configureValidatingRepositoryEventListener(ValidatingRepositoryEventListener
 validatingListener) {
  Validator validator = validator();
  //bean validation always before save and create
  validatingListener.addValidator("beforeCreate", validator);
  validatingListener.addValidator("beforeSave", validator);
}
Kodla Ekleme
Eğer kodla yapmak istersek açıklaması şöyle.
If you would rather not use the bean name prefix approach, then you simply need to register an instance of your validator with the bean who's job it is to invoke validators after the correct event. In your configuration that subclasses Spring Data REST's RepositoryRestMvcConfiguration, override the configureValidatingRepositoryEventListener method and call the addValidator method on the ValidatingRepositoryEventListener, passing the event you want this validator to be triggered on, and an instance of the validator.
Örnek
Şöyle yaparız.
@Override
protected void configureValidatingRepositoryEventListener(
  ValidatingRepositoryEventListener validatingListener) {
  validatingListener.addValidator("beforeCreate", new PeopleValidator());
}

Hiç yorum yok:

Yorum Gönder