• SpringBoot+读取properties文件内容并注入到类属性中


    第一种方法,以发送短信功能为例:

    1.application.properties文件:

    sms.host=http://dingxin.market.alicloudapi.com
    sms.path=/dx/sendSms
    sms.method=POST
    sms.appcode=xxxxxxx

    2.需要注入的类,在类的上面加上@Component,在类属性上加上@Value("${sms.host}")

    完整代码:

    import java.util.HashMap;
    import java.util.Map;
    
    import org.apache.http.HttpResponse;
    import org.apache.http.util.EntityUtils;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.stereotype.Component;
    
    import com.atguigu.scw.vo.resp.AppResponse;
    
    import lombok.extern.slf4j.Slf4j;
    
    @Slf4j
    @Component
    public class SmsTemplate {
        
        @Value("${sms.host}")
        String host ;
        
        @Value("${sms.path}")
        String path ;
        
        @Value("${sms.method}")
        String method ;
        
        @Value("${sms.appcode}")
        String appcode ;
        
        public AppResponse<String> smsSent(Map<String, String> querys) {
    
            Map<String, String> headers = new HashMap<String, String>();
            //最后在header中的格式(中间是英文空格)为Authorization:APPCODE xxxxxxx
            headers.put("Authorization", "APPCODE " + appcode);
    
            Map<String, String> bodys = new HashMap<String, String>();
    
    
            try {
    
                HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys);
                log.debug("短信发送结果-----------:{}",EntityUtils.toString(response.getEntity()));
                //获取response的body
                //System.out.println(EntityUtils.toString(response.getEntity()));
                return AppResponse.ok(response.toString());
            } catch (Exception e) {
                e.printStackTrace();
                return AppResponse.fail(null);
            }
            
        }
    
    }

    第二种方法,以上传文件功能为例:

    1.application.properties文件:

    #单个文件大小
    spring.servlet.multipart.max-file-size=10MB
    #总文件大小
    spring.servlet.multipart.max-request-size=10MB
    
    oss.endpoint=oss-cn-beijing.aliyuncs.com
    oss.accessKeyId=xxxxxxx
    oss.accessKeySecret=xxxxxxx
    oss.bucket=xxxxxx

     

    2.在类上加上@SpringBootConfiguration,把类设置为springboot的配置类,在方法上面加上@Bean和@ConfigurationProperties(prefix = "oss"),赋值后注入到springboot框架,并把类的对象返回

    注意:类要加上get和set方法,用lombok的@data注解也行

    配置文件的代码:

    package com.atguigu.scw.project.config;
    
    import org.springframework.boot.SpringBootConfiguration;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.context.annotation.Bean;
    
    import com.atguigu.scw.project.component.OssTemplate;
    
    @SpringBootConfiguration
    public class AppProjectConfig {
        
        @Bean
        @ConfigurationProperties(prefix = "oss")
        public OssTemplate ossTemplate() {
            return new OssTemplate();
        }
    
    }

    上传文件的代码:

    import java.io.InputStream;
    import java.util.UUID;
    
    import org.springframework.stereotype.Component;
    
    import com.aliyun.oss.OSS;
    import com.aliyun.oss.OSSClientBuilder;
    
    import lombok.Data;
    import lombok.ToString;
    import lombok.extern.slf4j.Slf4j;
    
    @ToString
    @Data
    @Slf4j
    //@Component
    public class OssTemplate {
    //    @Value("${oss.endpoint}")
        String endpoint;
        // 云账号AccessKey有所有API访问权限
        String accessKeyId;
        String accessKeySecret;
        String bucket;
    
        public String upload(String fileName, InputStream inputStream) {
    
            log.debug("endpoint={}", endpoint);
            log.debug("accessKeyId={}", accessKeyId);
            log.debug("accessKeySecret={}", accessKeySecret);
            log.debug("bucket={}", bucket);
            String tempFileName = null;
    
            try {
    
                // 创建OSSClient实例。
                OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
    
                // 上传文件流。
                tempFileName = UUID.randomUUID().toString().replace("-", "") + "_" + fileName;
                ossClient.putObject(bucket, "pic/" + tempFileName, inputStream);
    
                // 关闭OSSClient。
                ossClient.shutdown();
    
                // https://bucket.oss-cn-beijing.aliyuncs.com/pic/test.jpg
                String filepath = "https://" + bucket + "." + endpoint + "/pic/" + tempFileName;
                log.debug("文件上传后的路径:{}",filepath);
                return filepath;
            } catch (Exception e) {
                e.printStackTrace();
                log.debug("文件上传失败-{}", tempFileName);
                return null;
            }
    
        }
    }
  • 相关阅读:
    Codeforces Round #445 A. ACM ICPC【暴力】
    “玲珑杯”ACM比赛 Round #1
    HDU 6034 Balala Power!【排序/进制思维】
    2017多校训练1
    POJ 3620 Avoid The Lakes【DFS找联通块】
    Educational Codeforces Round 1D 【DFS求联通块】
    Openjudge1388 Lake Counting【DFS/Flood Fill】
    洛谷 P1506 拯救oibh总部【DFS/Flood Fill】
    小白书 黑白图像【DFS/Flood Fill】
    SSOJ 2316 面积【DFS/Flood Fill】
  • 原文地址:https://www.cnblogs.com/appium/p/14097449.html
Copyright © 2020-2023  润新知