qq_39296167
Mr.Gong先生
采纳率0%
2019-02-18 00:38 阅读 3.4k

在SpringMVC的service实现类即serviceImpl里如何声明全局变量?

@Service("XXXService")
public class GoodsServiceImpl implements GoodsService {
//商品展示图片路径
private List goodsPicturePath;

    @Resource
    //商品Dao接口
private GoodsDao goodsDao;

    @Override
public void uploadImg(HttpServletRequest request) {

          ```

          ```
   //获取前台传过来的图片,代码略(此处没问题)

   //随机生成图片名称
    String imgName = UUID.randomUUID().toString() + ".jpeg";
   //使用IO流,给文件命名,指定存放目标文件地址
    String destPath = localPath + systemSeparator + imgName;

   //*********此处会报空指针异常*********
   //想把每一次生成的图片路径放到goodsPicturePath集合里保存,最后插到数据库中,一致没有找到什么好的解决方法
   this.goodsPicturePath.add(destPath + ";");
  }

}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

5条回答 默认 最新

  • xiaoming120915 MLi_hb 2019-02-18 08:27

    尝试是用静态变量声明一个集合。

    点赞 评论 复制链接分享
  • it_zhangwei 路漫漫兮其修远兮 2019-02-18 09:43

    在使用前,赋值一个集合

        @Override
    public void uploadImg(HttpServletRequest request) {
    
              ```
    
              ```
       //获取前台传过来的图片,代码略(此处没问题)
    
       //随机生成图片名称
        String imgName = UUID.randomUUID().toString() + ".jpeg";
       //使用IO流,给文件命名,指定存放目标文件地址
        String destPath = localPath + systemSeparator + imgName;
    
       this.goodsPicturePath = new ArrayList();
       this.goodsPicturePath.add(destPath + ";");
      }
    
    
    点赞 评论 复制链接分享
  • zheng963 zheng963 2019-02-18 10:45

    你可以试试这样,用bean创建对象:

    @Bean
    private List goodsPicturePath(){
            return new ArrayList<>();
    }
    
    点赞 评论 复制链接分享
  • qq_18630487 真-酸辣土豆丝 2019-02-18 11:15

    你需要了解一下静态变量和单例模式。项目中有工具类吧?有的话在工具类中创建一个静态单例的List goodsPicturePath 对象。用的时候直接Utils.getGoodsPicturePath();返回这个集合。这个集合相对于项目就是全局唯一的。不过集群和分布式项目不适用(可以用redis中的队列代替)

    点赞 评论 复制链接分享
  • qq_34872748 L星火燎原 2019-02-18 11:17

    private List goodsPicturePath(){
    return new ArrayList<>();
    }
    每次调用这个方法就行了。

    点赞 评论 复制链接分享

相关推荐