2015-08-23 2 views
0

Я разрабатываю плагин слияния, используя slass. При использовании плагинов-версии 2, в соответствии с документами Atlassian, для каждого компонента создается экземпляр компонента, если компонент является общедоступным, он также отображается как служба OSGI (которую я могу видеть на консоли Felix). (См. atlassian docu.) .)Какая область видимости компонента компонента слияния и как его контролировать?

У меня есть 3 copmponents в моем плагине слияния, один из них является общедоступным, остальные являются «частными» (public = «false»). Мой главный bean (называемый «artifact-store») - тот, который является общедоступным - я использую в некоторых макроклассах и вставляю его через конструктор. В atlassian-plugin.xml я объявил компонент, как это:

<component key="artifact-store" class="info.magnolia.sys.confluence.plugin.artifactinfo.artifactstore.ArtifactCache" name="Artifact store to cache artifacts" public="true"> 
<interface>info.magnolia.sys.confluence.plugin.artifactinfo.ArtifactSearch</interface> 
    <description key="artifact-store.decription">Artifact store to cache artifacts based on Atlassian cache api.</description> 
</component> 

Atlassian доку говорит: «Экземпляры создаются за использование (прототипы область видимости) ...» Сомневаюсь об этом. При отладке моих макросов я всегда вижу один и тот же экземпляр «artifact-store», поэтому я считаю, что область не является «прототипом». Это было бы хорошо для меня, я хочу область «singleton», но я не уверен, действительно ли это.
Для дальнейшего контроля над фасолью Atlassian рекомендует декларировать бобы в META-INF/spring /, поэтому я создал весенние бобы «определение» artifact-info-plugin/src/main/resources/META-INF/spring/artifact-info-plugin.xml; я добавил туда один боб:

<bean id="artifactSearchBean" class="info.magnolia.sys.confluence.plugin.artifactinfo.artifactstore.ArtifactCache" scope="singleton"> 
    <description>A bean chaching artifact data</description> 
</bean> 

В В atlassian-plugin.xml я изменил определение компонента для:

<component key="artifact-store" class="bean:artifactSearchBean" name="Artifact store to cache artifacts" public="true"> 
    <interface>info.magnolia.sys.confluence.plugin.artifactinfo.ArtifactSearch</interface> 
    <description key="artifact-store.decription">Artifact store to cache artifacts based on Atlassian cache api.</description> 
</component> 

Я пробовал, но не работаю для меня, есть больше не доступно bean bean; ни один из компонентов не создается; как следствие, макросы (компоненты компонентов потребления) также больше не доступны.

Подытожим вопросы:

  • Что боб сфера слияния плагин <component/>?
  • Является ли область одинаковой для общественных и частных компонентов компонентов?
  • Как я могу обеспечить, чтобы beone-бленд с одним ядром?
  • Действительно ли можно объявить компонентный компонент в META-INF/spring/beans.xml? Если да, то как? Не могли бы вы привести краткий пример?

Некоторая возможно дальнейшим интересная информация о о моем окружении: в П:

<confluence.version>5.8.9</confluence.version> 
<confluence.data.version>5.8.9</confluence.data.version> 
<amps.version>5.1.11</amps.version> 

в Atlassian-plugin.xml: <atlassian-plugin plugins-version="2"/>

Потому что я не разрешается добавлять более 2 ссылки , я добавлю полные ссылки на файл pom, plugin xml и beans xml в качестве комментариев.

+0

- П: https://gist.github.com/Watcher24/247d7b633095e1a8ce59 - плагин-XML: https://gist.github.com/Watcher24/62937ba288bdd2eeb552 - бобы-XML: https://gist.github.com/Watcher24/1e6fd0d6fdc48f4cb9d6 –

ответ

1

Что такое бонус плагина слияния?

Это одноточечно

ли объем одинаков для государственной и «частной» фасоли компонентов?

Да

Как я могу гарантировать, чтобы иметь одноэлементно область действия боб?

Если определено в atlassian-plugin.xml, они уже однотонные.

Действительно ли можно объявить компонентный компонент в META-INF/spring/beans.xml? Если да, то как? Не могли бы вы привести краткий пример?

Я никогда не пробовал определять beans.xml. Я только весной аннотации конфигурация: Добавлена ​​SRC/главный/ресурсы/META-INF/весна/spring.xml с следующим содержанием:

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> 
    <context:annotation-config /> 
    <context:component-scan base-package="com.jiraworkcalendar" /> 
</beans 
+0

большое спасибо за быстрый ответ! –

Смежные вопросы