场景:

oss上传接口频繁使用出错:移动端循环调用oss图片上传方法时报错

错误信息:

com.aliyun.oss.ClientException: Unknown ...

Caused by: java.lang.IllegalStateException: Connection pool shut down

...

由于在创建连接的时候@Bean默认是单例的,所以当我们每次上传完后,连接关闭,导致再次上传出现连接错误

解决方案:将bean设置成多例模式

@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE )

  

Scope

Singleton Scope来定义一个bean,意味着容器创建一个单例的bean。虽有对它的请求都会返回相同的对象,任何一方进行了修改,都会响应到其他使用的地方。如果不指定其他scope,singleton是默认的scope

    @Configuration
    public void Config{

        @Bean
        @Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
        public Person personSingleton() {
            return new Person();
        }
    }

Prototype Scope定义的bean,每次容器请求都会创建一个新的bean;

    @Configuration
    public void Config{

        @Bean
        @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
        public Person personSingleton() {
            return new Person();
        }
    }

若是还不行,shutDown方法换个地方

改为上传一个关一个

最终成功解决!

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐