问题背景

今天使用了一个百度的UEditor富文本编辑组件。后端需要一些配置,然后就下载了百度的Demo进行导入。
百度的Demo是通过流存入本地,但是我需要通过调用封装好的方法进行上传到文件服务器。如下:
public class BinaryUploader {

    @Autowired
    private  FileTransferUtil fileTransferUtil;
    
    public  static final State save(HttpServletRequest request,Map<String, Object> conf) {
        //......
        String fileId = fileTransferUtil.uploadFileBase64(base64EncoderImg,itcode);


        //......
    }

编译时会报错: 无法从静态上下文中引用非静态 变量 fileTransferUtil

解决方法

  1. 自动装配一个被static修饰的同类型的变量
  2. 写个被@PostConstruct注解注释的方法,将自动注入的值赋值给定义的static变量
  3. 使用该static变量来代替之前的。
@Component
public class BinaryUploader {
    @Autowired
    private  FileTransferUtil fileTransferUtil;

    @Autowired
    private static FileTransferUtil staticFileTransferUtil;

    @PostConstruct
    public void init() {
        staticFileTransferUtil = fileTransferUtil;
    }

    public  static final State save(HttpServletRequest request,Map<String, Object> conf) {
        //......
        String fileId = staticFileTransferUtil.uploadFileBase64(base64EncoderImg,itcode);


        //......
    }

OK~

标签: Spring

添加新评论