30 Mayıs 2018 Çarşamba

Jersey ResourceConfig Sınıfı

Giriş
Şu satırı dahil ederiz..
import org.glassfish.jersey.server.ResourceConfig;
Bu sınıf javax.ws.rs.core.Application sınıfından kalıtır.

packages metodu
Bu metod fat jar'lar için çalışmayabilir.

Örnek
Şöyle yaparız. Rest noktası olarak yüklenecek sınıfların bulunduğu paketi belirtir.
public class RestApplication extends ResourceConfig {
  public RestApplication() {
    register(new MyApplicationBinder());
    packages(true, "com.mypackage.rest");
  }
}
property metodu
Örnek
Şöyle yaparız
@Component
@ApplicationPath("/api")
public class JerseyConfig extends ResourceConfig {

  public JerseyConfig() {
    register(JacksonJaxbJsonProvider.class);
    packages("tech.aabo.celulascontentas.endpoint");
    property(ServerProperties.BV_SEND_ERROR_IN_RESPONSE, true);
  }
}
register metodu
Örnek
Şöyle yaparız. Paket ismi belirtmek yerine direkt Rest noktasını belirten sınıfı belirtmek için kullanılır.
public class RestApplication extends ResourceConfig {
  public RestApplication () {
    register(FooEndpoint.class);
}
Örnek
Şöyle yaparız.
package cn.cwhale.bowei;

import org.glassfish.jersey.internal.inject.AbstractBinder;
import org.glassfish.jersey.media.multipart.MultiPartFeature;
import org.glassfish.jersey.process.internal.RequestScoped;
import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.server.spring.SpringLifecycleListener;
import org.glassfish.jersey.server.spring.scope.RequestContextFilter;
import org.springframework.web.filter.CommonsRequestLoggingFilter;

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.container.ContainerRequestFilter;

@ApplicationPath("/api/*")
public class AppConfig extends ResourceConfig {

  public AppConfig() {

    register(MultiPartFeature.class); //jersey
    register(SpringLifecycleListener.class); //jersey
    register(RequestContextFilter.class); //jersey
    register(ContainerRequestFilter.class); //jax-rs
    register(CommonsRequestLoggingFilter.class);//spring

    property("encoding", "utf-8");

  }
}
register metodu ve AbstractBinder
Örnek
Elimizde şu kod olsun.
public class GeneralFormFactory implements Supplier<GeneralForm> {

  @Override
  public GeneralForm get() {
    GeneralForm result = new GeneralForm();
    return result;
  }
}
Şöyle yaparız.
register(new AbstractBinder() {
  @Override
  protected void configure() {
    bindFactory(GeneralFormFactory.class).to(GeneralForm.class)
      .proxy(true).proxyForSameScope(false).in(RequestScoped.class);
  }
});

Hiç yorum yok:

Yorum Gönder