Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

Simple dependency injection in Atlassian?

todor kolev February 9, 2014

Can I use simple dependency injection in Jira/Confluence? For example simply annotating a class with @Component and then injecting in another class with @Autowired... or I need to do it using Spring Dynamic Modules as described here - https://developer.atlassian.com/display/DOCS/OSGi,+Spring+and+the+Plugin+Framework

3 answers

1 accepted

1 vote
Answer accepted
Steve Gerstner [bridgingIT]
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
February 9, 2014

Use dependency injection via constructor or setter -> https://developer.atlassian.com/display/CONFDEV/Spring+IoC+in+Confluence

todor kolev February 9, 2014

Thanks, for the reference Steve. As far as I can see I can only use xml declarations of beans? ... no component scanning is in place and therefore cannot use annotations?

Like • nehemuxopu@webgmail.info likes this
Steve Gerstner [bridgingIT]
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
February 9, 2014

It's a little bit more complicatet as beside spring each bean is a osgi component.

First, you do not use xml declarations, normally.

You will define a component module which represents a spring bean and an osgi component. This module is defined in the atlassian-plugin.xml. In generall you do not handle with spring directly. And you will not handle osgi directly. That's all wrapped in the atlassian plugin framework.

I'm not sure, but maybe @Reference from Felix-SCR might work. -> http://felix.apache.org/documentation/subprojects/apache-felix-maven-scr-plugin/scr-annotations.html#reference

But I have never tried that.

todor kolev February 9, 2014

Yeah component module is what I need, thanks!

1 vote
Kul Bhushan Prasad August 13, 2015

Hi,

More Specifically First Add the component in your atlassian-plugin.xml like

 

<component key="myClass" class="com.componay.confluence.plugin.MyComponentClass">
<description>Provides Body markup service.</description>
</component>

Then use setter injection/constructor injection to inject the object like

private MyComponentClass componentClass;
public void setMyComponentClass(MyComponentClass componentClass) {
this.componentClass= componentClass;
}

 

It will inject the object reference in your target class.

0 votes
Kul Bhushan Prasad August 14, 2015

Another way to do it.

Follow https://answers.atlassian.com/questions/140877

Suggest an answer

Log in or Sign up to answer
TAGS
atlassian, team '25 europe, atlassian event, barcelona 2025, jira, confluence, atlassian intelligence, rovo, ai-powered collaboration, developer tools, agile teams, digital transformation, teamwork solutions, atlassian conference, product announcements

🌆 Team '25 Europe registration is now open!

Join the largest European gathering of the Atlassian Community and reimagine what’s possible when great teams and transformative technology come together. Plus, grab your Super Fan ticket now and save over €1,000 on your pass before prices rise on 3 June.

Register now
AUG Leaders

Atlassian Community Events