微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

没有“com.atlassian.confluence.user.UserAccessor”类型的合格bean可用错误

如何解决没有“com.atlassian.confluence.user.UserAccessor”类型的合格bean可用错误

我正在开发一个 Confluence Server 插件,每次访问我的 servlet 模块时我都会收到这个错误

com.atlassian.util.concurrent.LazyReference$InitializationException:org.springframework.beans.factory.UnsatisfiedDependencyException:创建名为“dso.intern.plugin.BulkUserCreatorToolServlet”的bean时出错:通过构造函数参数0表示的不满足的依赖;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDeFinitionException:没有可用的“com.atlassian.confluence.user.UserAccessor”类型的合格 bean:预期 至少 1 个 bean 符合自动装配候选条件。

这是我的代码

@Named("BulkUserCreatorToolServlet")
public class BulkUserCreatorToolServlet extends HttpServlet{

    private final UserAccessor userAccessor;

    public BulkUserCreatorToolServlet(UserAccessor userAccessor){
        this.userAccessor = userAccessor;
    }

    @Override
    protected void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException,servletexception {

        // Create a factory for disk-based file items
        diskFileItemFactory factory = new diskFileItemFactory();

        // Configure a repository (to ensure a secure temp location is used)
        ServletContext servletContext = this.getServletConfig().getServletContext();
        File repository = (File) servletContext.getAttribute("javax.servlet.context.tempdir");
        factory.setRepository(repository);

        // Create a new file upload handler
        ServletFileUpload upload = new ServletFileUpload(factory);

        try{
            //Parse the request to get file items
            List<FileItem> fileItems = upload.parseRequest(request);

            // Process the uploaded items
            Iterator<FileItem> iter = fileItems.iterator();
            String contentType = null;
            while(iter.hasNext()){
                FileItem item = iter.next();

                if(!item.isFormField()){
                    String content = item.getString();
                    StringReader sReader = new StringReader(content);
                    Iterable<CSVRecord> records = CSVFormat.DEFAULT.withFirstRecordAsHeader().parse(sReader);
                    for(CSVRecord record : records){
                        String username = record.get("Username");    //UTF-8 BOM
                        String fullname = record.get("Fullname");
                        String email = record.get("Email");
                        String password = record.get("Password");
                        String groupsToBeAddedInto = record.get("GroupsToBeAddedInto");

                        DefaultUser defaultUser = new DefaultUser(username,fullname,email);
                        ConfluenceUser newUser = userAccessor.createuser(defaultUser,Credential.unencrypted(password));
                     userAccessor.addMembership(UserAccessor.GROUP_CONFLUENCE_USERS,username);
                        
                    }
                }
            }
            
            response.setContentType("text/html; charset=UTF-8");

            PrintWriter out = response.getWriter();
            out.println("<!DOCTYPE html>");
            out.println("<html><head>");
            out.println("<Meta name=\"decorator\" content=\"atl.admin\" />");
            out.println("<title>Response Page</title></head></html>");

        }
        catch(FileUploadException e){
            e.printstacktrace();
        }
        catch(Exception e){
            e.printstacktrace();
        }
    }
}

我应该如何解决这个问题?

解决方法

UserAccessor 不受 spring 容器管理。

@Named("BulkUserCreatorToolServlet")
public class BulkUserCreatorToolServlet extends HttpServlet{

    private final UserAccessor userAccessor;

    public BulkUserCreatorToolServlet(UserAccessor userAccessor){
        this.userAccessor = userAccessor;
    }

@Named("BulkUserCreatorToolServlet")
@Compoment //add this may let it managed by spring container
public class BulkUserCreatorToolServlet extends HttpServlet{

    @Autowried // add this may let it managed by spring container
    private final UserAccessor userAccessor;

    public BulkUserCreatorToolServlet(UserAccessor userAccessor){
        this.userAccessor = userAccessor;
    }

Please have a try.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?