@Singleton или getSingletons () при реализации Singleton Resources в Джерси - PullRequest
7 голосов
/ 29 июня 2011

У меня есть ресурс, который будет выставлен как Restful WS. Если мне нужно сделать его Singleton, какой способ предпочтительней и рекомендуемый:

1. Аннотирование класса ресурсов с использованием @Singleton

или

2. Реализация метода getSingletons() в моей реализации класса Application и создание там экземпляра ресурса, например

   public class RestApplication extends Application {

    private Set<Object> singletons = new HashSet<Object>();

    public RestApplication() {
        singletons.add(new PlayerResource());
    }

    @Override
    public Set<Class<?>> getClasses() {
        return null;
    }

    @Override
    public Set<Object> getSingletons() {
        return singletons;
    }
}

Я попробовал оба способа и понял, что оба они создают одноэлементный экземпляр класса ресурсов, в данном случае PlayerResource.

1 Ответ

0 голосов
/ 31 июля 2018

В большинстве случаев на все технические вопросы, которые вам нужно знать, уже дан ответ здесь .

Для остальной части вашего ответа это не имеет большого значения, если вы последовательны во всей кодовой базе.

Преимущество отказа от использования аннотации состоит в том, что если ресурсы, не предоставленные Джерси, нуждаются в ресурсах, он получит тот же единственный объект. (Например, если вы ожидаете, что сторонние плагины будут взаимодействовать с этим ресурсом)

Преимущество использования аннотации состоит в том, что вы можете позволить Джерси позаботиться о раздражающих / утомительных вещах для вас. (Как очистка ресурса, если вы используете какие-либо близкие ресурсы.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...