Используя jedis с Spring, но не с библиотекой Spring-Data, где хранить пул?

В документах jedis говорится о создании пула:

Пул JedisPool = новый JedisPool (новый JedisPoolConfig(), "localhost");

И что я должен хранить это где-то статически.

Я знаю, что у Spring есть библиотека Spring-Data, которая находится в разработке, но пока я просто хочу использовать библиотеку без нее.

Где вы предлагаете мне создать эту статическую ссылку на пул?

Должен ли я создать JedisService, а затем иметь общедоступный метод, который возвращает этот пул?

Я делаю это, используя шаблон singleton? заблокировать перед возвратом?


person Blankman    schedule 29.11.2011    source источник


Ответы (1)


Если вы используете Spring, вы не можете использовать new и иметь объект под контролем Spring. Сделайте его Spring bean-компонентом и инициализируйте его с помощью фабричного метода.

Вы объявляете bean-компоненты в XML-контексте приложения Spring (или с помощью аннотаций, если вы так склонны):

<bean id="jedisPool" class="foo.bar.JedisPool">
    <constructor-arg ref="jedisPoolCofig"/>
    <constructor-arg value="localhost"/
</bean>
person duffymo    schedule 29.11.2011
comment
какие-нибудь советы о том, как определить bean-компонент и сделать его статическим? любой код был бы признателен, так как я не знаком с этим. - person Blankman; 29.11.2011
comment
но это не делает его статичным, не так ли? - person Blankman; 01.12.2011
comment
Бобы не статичны — почему вы так думаете? - person duffymo; 01.12.2011
comment
Нет, я говорю, как сделать ссылку на jedisPool статической? Вики Jedis говорит, что ссылка на jedisPool должна быть статической. - person Blankman; 01.12.2011
comment
Почему он должен быть статичным? Пример в вашем вопросе вызывает новый; это не статично. - person duffymo; 01.12.2011
comment
извините за путаницу: вы можете хранить пул где-то статически, он потокобезопасен. github.com/xetorthio/jedis/wiki/Начало работы - person Blankman; 02.12.2011