四、Jersey的配置

原文:https://blog.csdn.net/wolfcode_cn/article/details/80797069

一、Application

在JAX-RS中,提供了一个非常重要的对象:javax.ws.rs.core.Application。该类定义了一个JAX-RS应用的基本组件和相关的信息。一般我们可以使用Application或者通过继承Application类来完成自己的特定的配置。
该类中就只提供了三个方法用来复写:

    public Set<Class<?>> getClasses():该方法需要返回一组组件的类型,返回的类型就是需要注册的组件,可以是资源类,Providers等。
    public Set<Object> getSingletons():该方法需要返回一组组件的实例,这些实例就是资源类,Providers等,但是要求这些资源类,Provider的实例都是完成了相关依赖的注入的,并且都是单利的(这点我们在之前已经介绍过了@Singleton)。本质来说,这个方法就是JAX-RS的各种组件的工厂方法。
    public Map<String, Object> getProperties():该方法是自定义的针对Jersey的配置项。返回的配置项将会设置给javax.ws.rs.core.Configuration接口的实现,一个Configuration对象保存了一个JAX-RS应用的配置状态。

通过上面的介绍我们可以看到,如果要我们自己完全通过继承Application类,来实现我们自己的应用配置,这个是很困难的时候。所以更多的时候,我们采用了另外的方式。

二、ResourceConfig

为了方便我们自定义应用,Jersey提供了org.glassfish.jersey.server.ResourceConfig类来简化我们的操作。ResourceConfig类是Jersey自己实现了Application,并且还实现了Configuration接口。
ResourceConfig类提供了非常多的方法来注册JAX-RS组件,比如自动的资源类扫描就是其提供的众多功能之一。
我们想要使用ResourceConfig类来注册我们自己的组件,只需要继承ResourceConfig,并且在构造方法中,注册我们自己的组件即可。

    public class RestApplication extends ResourceConfig {
     
    public RestApplication(){
        this.packages("cn.wolfcode.jersey");
        this.registerClasses(MyResourceInotherPackage.class);
        this.register(MultiPartFeature.class);
        this.register(FastjsonBodyReader.class);
        this.register(FastjsonBodyWriter.class);
        this.property(CommonProperties.FEATURE_AUTO_DISCOVERY_DISABLE_SERVER, true);
    }
    }

在这个自定义类中,展示了几点:
1,通过继承ResourceConfig类,并且在类的构造方法中,完成了我们自己的组件注册和配置;
2,最常用的配置方法:

packages:提供自动扫描组件,包括资源类,Provider,Feature;如果有多个包需要扫描,用分号隔开;
registerClasses:提供手动注册组件,包括资源类,Provider,Feature等,提供可变参数同时注册多个;
register:提供手动注册组件,包括Provider和Feature;
property:提供手动添加配置选项的方法;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值