如何解决没有“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 举报,一经查实,本站将立刻删除。