Configuration实现程序启动初始化对象

(26) 2024-01-17 11:12

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说Configuration实现程序启动初始化对象,希望能够帮助你!!!。

1、配置类

将Bean注入到容器管理

 /**
  * OSS对象存储相关配置
  * Created by macro on 2018/5/17.
  */
 @Configuration
 public class OssConfig {
     @Value("${aliyun.oss.endpoint}")
     private String ALIYUN_OSS_ENDPOINT;
     @Value("${aliyun.oss.accessKeyId}")
     private String ALIYUN_OSS_ACCESSKEYID;
     @Value("${aliyun.oss.accessKeySecret}")
     private String ALIYUN_OSS_ACCESSKEYSECRET;
     @Bean
     public OSSClient ossClient(){
         return new OSSClient(ALIYUN_OSS_ENDPOINT,ALIYUN_OSS_ACCESSKEYID,ALIYUN_OSS_ACCESSKEYSECRET);
     }
 }

2、bean使用

 @Service
 public class OssServiceImpl implements OssService {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(OssServiceImpl.class);
     @Value("${aliyun.oss.policy.expire}")
     private int ALIYUN_OSS_EXPIRE;
     @Value("${aliyun.oss.maxSize}")
     private int ALIYUN_OSS_MAX_SIZE;
     @Value("${aliyun.oss.callback}")
     private String ALIYUN_OSS_CALLBACK;
     @Value("${aliyun.oss.bucketName}")
     private String ALIYUN_OSS_BUCKET_NAME;
     @Value("${aliyun.oss.endpoint}")
     private String ALIYUN_OSS_ENDPOINT;
     @Value("${aliyun.oss.dir.prefix}")
     private String ALIYUN_OSS_DIR_PREFIX;
 
     @Autowired
     private OSSClient ossClient;
 
     /**
      * 签名生成
      */
     @Override
     public OssPolicyResult policy() {
         OssPolicyResult result = new OssPolicyResult();
         // 存储目录
         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
         String dir = ALIYUN_OSS_DIR_PREFIX+sdf.format(new Date());
         // 签名有效期
         long expireEndTime = System.currentTimeMillis() + ALIYUN_OSS_EXPIRE * 1000;
         Date expiration = new Date(expireEndTime);
         // 文件大小
         long maxSize = ALIYUN_OSS_MAX_SIZE * 1024 * 1024;
         // 回调
         OssCallbackParam callback = new OssCallbackParam();
         callback.setCallbackUrl(ALIYUN_OSS_CALLBACK);
         callback.setCallbackBody("filename=${object}&size=${size}&mimeType=${mimeType}&height=${imageInfo.height}&width=${imageInfo.width}");
         callback.setCallbackBodyType("application/x-www-form-urlencoded");
         // 提交节点
         String action = "http://" + ALIYUN_OSS_BUCKET_NAME + "." + ALIYUN_OSS_ENDPOINT;
         try {
             PolicyConditions policyConds = new PolicyConditions();
             policyConds.addConditionItem(PolicyConditions.COND_CONTENT_LENGTH_RANGE, 0, maxSize);
             policyConds.addConditionItem(MatchMode.StartWith, PolicyConditions.COND_KEY, dir);
             String postPolicy = ossClient.generatePostPolicy(expiration, policyConds);
             byte[] binaryData = postPolicy.getBytes("utf-8");
             String policy = BinaryUtil.toBase64String(binaryData);
             String signature = ossClient.calculatePostSignature(postPolicy);
             String callbackData = BinaryUtil.toBase64String(JSONUtil.parse(callback).toString().getBytes("utf-8"));
             // 返回结果
             result.setAccessKeyId(ossClient.getCredentialsProvider().getCredentials().getAccessKeyId());
             result.setPolicy(policy);
             result.setSignature(signature);
             result.setDir(dir);
             result.setCallback(callbackData);
             result.setHost(action);
         } catch (Exception e) {
             LOGGER.error("签名生成失败", e);
         }
         return result;
     }
 
     @Override
     public OssCallbackResult callback(HttpServletRequest request) {
         OssCallbackResult result= new OssCallbackResult();
         String filename = request.getParameter("filename");
         filename = "http://".concat(ALIYUN_OSS_BUCKET_NAME).concat(".").concat(ALIYUN_OSS_ENDPOINT).concat("/").concat(filename);
         result.setFilename(filename);
         result.setSize(request.getParameter("size"));
         result.setMimeType(request.getParameter("mimeType"));
         result.setWidth(request.getParameter("width"));
         result.setHeight(request.getParameter("height"));
         return result;
     }
 
 }

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复