Hi everyone,
I’m developing a Jira Server/Data Center plugin and I’m stuck with Spring Scanner service injection. I keep getting NoSuchBeanDefinitionException although I think I have annotated everything correctly.
Jira: 10.3.9
active-objects: 6.1.2
atlassian-spring-scanner version: 3.0.4
Trace
org.springframework.beans.factory.UnsatisfiedDependencyException:
Error creating bean with name 'de.jiraplugin.Sure':
Unsatisfied dependency expressed through constructor parameter 0;
nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException:
No qualifying bean of type 'de.jiraplugin.BookedHoursTransactions' available:
expected at least 1 bean which qualifies as autowire candidate.
Service interface
import com.atlassian.activeobjects.external.ActiveObjects;
import com.atlassian.plugin.spring.scanner.annotation.component.Component;
import com.atlassian.plugin.spring.scanner.annotation.export.ExportAsService;
import com.atlassian.plugin.spring.scanner.annotation.imports.ComponentImport;
import javax.inject.Inject;
@Component
@ExportAsService({BookedHoursTransactions.class})
public class BookedHoursTransactionsImpl implements BookedHoursTransactions {
private final ActiveObjects ao;
@Inject
public BookedHoursTransactionsImpl(@ComponentImport ActiveObjects ao) {
this.ao = ao;
}
@Override
public void doSomething() {
// ...
}
}
Servlet
import javax.inject.Inject;
import javax.inject.Named;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.atlassian.jira.bc.issue.search.SearchService;
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.issue.link.IssueLinkManager;
import com.atlassian.jira.issue.worklog.WorklogManager;
import com.atlassian.jira.security.groups.GroupManager;
import com.atlassian.jira.user.ApplicationUser;
import com.atlassian.plugin.spring.scanner.annotation.imports.ComponentImport;
import com.atlassian.sal.api.auth.LoginUriProvider;
import com.atlassian.sal.api.user.UserManager;
import com.atlassian.templaterenderer.TemplateRenderer;
import com.atlassian.webresource.api.assembler.PageBuilderService;
import com.google.common.collect.Maps;
import de.jiraplugin.issues.DataGetter;
import de.jiraplugin.issues.Sponsor;
@Named
public class Sure extends HttpServlet {
...
private SearchService searchService;
private TemplateRenderer templateRenderer;
private final UserManager userManager;
private final CustomFieldManager customFieldManager;
private final WorklogManager worklogManager;
private final IssueLinkManager issueLinkManager;
private final GroupManager groupManager;
private final LoginUriProvider loginUriProvider;
private final PageBuilderService pageBuilderService;
private final BookedHoursTransactions bookedHoursTransactions;
@Inject
public Sure(BookedHoursTransactions bookedHoursTransactions) {
super();
this.searchService = ComponentAccessor.getComponent(SearchService.class);
this.templateRenderer = ComponentAccessor.getComponent(TemplateRenderer.class);
this.userManager = ComponentAccessor.getComponent(UserManager.class);
this.customFieldManager = ComponentAccessor.getComponent(CustomFieldManager.class);
this.worklogManager = ComponentAccessor.getComponent(WorklogManager.class);
this.issueLinkManager = ComponentAccessor.getComponent(IssueLinkManager.class);
this.groupManager = ComponentAccessor.getComponent(GroupManager.class);
this.loginUriProvider = ComponentAccessor.getComponent(LoginUriProvider.class);
this.pageBuilderService = ComponentAccessor.getComponent(PageBuilderService.class);
this.bookedHoursTransactions = bookedHoursTransactions;
}
I noticed that there is no "package x.y.z" in the first line of your Java code. Are you sure that your beans are in the expected packages?
(If you copied fragments without those lines, then ignore this.)
I only copied a snippet, in my actual code the package declarations exist
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.