SpringBoot案例-配置文件-@ConfigurationProperties

news2025/4/8 11:50:12

问题分析

在往期的配置参数的文章中,对于阿里云OSS的参数时设置在yml配置文件中,然后使用@Value(”${}“)对参数进行赋值,具体如下:

此种方法比较繁琐
 

问题解决

使用注解

  • @Data
    • 为变量自动生成get/set方法
  • @Component
    • 将参数交给IOC容器管理,成为bean对象
  • @ConfigurationProperties
    • 指定变量在yml配置文件中的前缀

具体思路:创建一个实体类用于封装需要用到的属性值,在需要使用的程序中通过注入实体类对象,将调用get方法即可获取对应的属性值

具体代码:

  • 实体类
    • package com.example.tlias.pojo;
      
      import lombok.Data;
      import org.springframework.boot.context.properties.ConfigurationProperties;
      import org.springframework.stereotype.Component;
      
      @Data // 自动生成get/set方法
      @Component // 注入IOC容器,生成Bean对象
      @ConfigurationProperties(prefix = "aliyun.oss") // 设置属性前缀,便于找到对应在yml映射文件中的属性位置
      public class AliOSSProperties {
          private String endpoint;
          private String accessKeyId;
          private String accessKeySecret;
          private String bucketName;
      }
      
  • 映射文件

    • ​​​​​​​ 

  • 调用属性程序 
    • ​​​​​​​
      package com.example.tlias.utils;
      
      import com.aliyun.oss.OSS;
      import com.aliyun.oss.OSSClientBuilder;
      import com.example.tlias.pojo.AliOSSProperties;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.beans.factory.annotation.Value;
      import org.springframework.stereotype.Component;
      import org.springframework.stereotype.Service;
      import org.springframework.web.multipart.MultipartFile;
      
      import java.io.*;
      import java.util.UUID;
      
      /**
       * 阿里云 OSS 工具类
       */
      @Component
      public class AliOSSUtils {
      
          //    // todo 指定OSS服务地址
      //    @Value("${aliyun.oss.endpoint}")
      //    private String endpoint;
      //    // todo 设置密钥账号和密码
      //    @Value("${aliyun.oss.accessKeyId}")
      //    private String accessKeyId;
      //    @Value("aliyun.oss.accessKeySecret")
      //    private String accessKeySecret;
      //    // todo 设置文件存储buket
      //    @Value("aliyun.oss.bucketName")
      //    private String bucketName;
          // todo 注入实体类对象
          @Autowired
          private AliOSSProperties aliOSSProperties;
      
          /**
           * 实现上传图片到OSS
           */
          public String upload(MultipartFile file) throws IOException {
              // todo 获取已经封装了的属性值
              String endpoint = aliOSSProperties.getEndpoint();
              String accessKeyId = aliOSSProperties.getAccessKeyId();
              String accessKeySecret = aliOSSProperties.getAccessKeySecret();
              String bucketName = aliOSSProperties.getBucketName();
              // 获取上传的文件的输入流
              InputStream inputStream = file.getInputStream();
      
              // 避免文件覆盖
              String originalFilename = file.getOriginalFilename();
              String fileName = UUID.randomUUID().toString() + originalFilename.substring(originalFilename.lastIndexOf("."));
      
              //上传文件到 OSS
              OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
              ossClient.putObject(bucketName, fileName, inputStream);
      
              //文件访问路径
              String url = endpoint.split("//")[0] + "//" + bucketName + "." + endpoint.split("//")[1] + "/" + fileName;
              // 关闭ossClient
              ossClient.shutdown();
              return url;// 把上传到oss的路径返回
          }
      
      }
      

 @ConfigurationProperties和@Value的比较

  • 相同点
    • ​​​​​​​都是用来注入外部配置的属性的
  • 不同点​​​​​​​
    • @Value注解只能一个一个进行外部属性的注入
    • @ConfigurationProperties可以批量地将外部地属性配置注入到bean对象地属性中

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/924242.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CrystalNet .Net VCL for Delphi Crack

CrystalNet .Net VCL for Delphi Crack VCL或更为人所知的可视化组件库是基于一个面向对象的框架,什么是用户对开发人员和事件的Microsoft Windows应用程序的接口。可视化组件库是用对象Pascal编写的。它主要是为使用Borland而开发的,它具有与Delphi以及…

vue关闭弹窗刷新父页面 this.$refs

代码截图 主页面 弹出框页面 接这一篇文章后续 参考链接

专题-【B树的构建与删除】

构建: 删除: 叶子结点直接删; 非叶结点 找前驱(左子树最右边)/后继(右子树最左边)元素覆盖即可(满足关键字个数取值范围); 这个更详细 『数据结构与算法』…

JAVA-编程基础-09-常用工具类

Lison <dreamlison163.com>, v1.0.0, 2023.04.16 JAVA-编程基础-09-常用工具类 文章目录 JAVA-编程基础-09-常用工具类Arrays工具类创建数组copyOfcopyOfRangefill 数组比较数组排序数组检索数组转流打印数组数组转 ListsetAllparallelPrefix StringUtils工具类字符串判…

PHP 安装Composer,vue前端依赖包

电脑安装Composer 官网下载&#xff1a;https://getcomposer.org/Composer-Setup.exe 后端安装&#xff1a; 检查是否安装依赖&#xff1a; 安装Composer install 或 Composer i 前端安装&#xff1a; yarn install 安装依赖

数组和指针练习(3)

题目&#xff1a; int main() { int a[5][5]; int(*p)[4]; p a; printf( "%p,%d\n", &p[4][2] - &a[4][2], &p[4][2] - &a[4][2]); return 0; } 思路分析&#xff1a; int(*p)[4]; 定义了指针变量p是一个数组指针&#xff0c;且该数组指…

Spring MVC详解

文章目录 一、SpringMVC1.1 引言1.2 MVC架构1.2.1 概念1.2.2 好处 二、开发流程2.1 导入依赖2.2 配置核心(前端)控制器2.3 后端控制器2.4 配置文件2.5 访问 三、接收请求参数3.1 基本类型参数3.2 实体收参【重点】3.3 数组收参3.4 集合收参 【了解】3.5 路径参数3.6 中文乱码 四…

Web 开发 Django 模板

上次为大家介绍了 Django 的模型和自带的管理工具&#xff0c;有了这个工具就可以全自动地根据模型创建后台管理界面&#xff0c;以供网站管理者更方便的管理网站数据。有了网站数据&#xff0c;那怎么样更方便又好看的展示给用户看呢&#xff1f;目前流行的 Web 框架基本都采用…

KFC框架:小游戏/H5 首包、分包、加载优化方案与项目示例

Cocos Creator 小游戏/H5 首包、分包、加载优化方案与项目示例 今天是疯狂星期四&#xff0c;给大家晒一下最近的成果。 麒麟子上周末将 《Jare 大冒险》 升级到了 Cocos Creator 3.8&#xff0c;并更新到了 Cocos Store。 在做了更精细的分包管理、资源加载拆分&#xff0c;…

办公室隔断,不同人员办公空间隔断设计要求

针对不同人员的办公空间隔断设计&#xff0c;需要考虑到他们的工作性质、隐私需求以及协作方式等因素。以下是一些常见人员类型的办公室隔断设计要求建议&#xff1a; 1. 管理层和高层领导&#xff1a; - 私密性与开放性平衡&#xff1a;管理层通常需要一定的私密性&#xff0c…

AI降温?创业者和投资人不这么想

2023年7月23日&#xff0c;超声波俱乐部AI Open Day在北京举办&#xff0c;百位AI领域顶级创业者、知名投资人汇聚一堂。 超声波创始人杨子超、紫辉创投创始合伙人&CEO郑刚、着魔APP创始人杨磊、豆语星辰CEO阎鹏、SpaceU联合创始人牟奇、Musical.ly天使投资人范路进行了一…

【面试 反思】Retrofit源码与设计 7 连问

前言 在实际项目中往往是使用Retrofit来做网络请求工作。Retrofit采用RESTful风格&#xff0c;本质上只是对OkHttp进行封装&#xff0c;今天我们根据几个问题来进一步学习一下Retrofit的源码与设计思想。 1. 使用方法 直接看一下官方介绍的使用方法。 public final class S…

STM32之17.PWM脉冲宽度调制

一LED0脉冲宽度调制在TIM14_CHI&#xff0c;先将LED&#xff08;PF9&#xff09;代码配置为AF推挽输出模式&#xff0c;将PF9引脚连接到TIM14&#xff0c; #include <stm32f4xx.h>static GPIO_InitTypeDef GPIO_InitStruct;void Led_init(void) {//打开端口F的硬件时钟&a…

021-从零搭建微服务-短信服务(一)

写在最前 如果这个项目让你有所收获&#xff0c;记得 Star 关注哦&#xff0c;这对我是非常不错的鼓励与支持。 源码地址&#xff08;后端&#xff09;&#xff1a;https://gitee.com/csps/mingyue 源码地址&#xff08;前端&#xff09;&#xff1a;https://gitee.com/csps…

Git gui教程---第八篇 Git gui的使用 创建一个分支

一般情况下一个主分支下代码稳定的情况下会新建出一个分支&#xff0c;然后在分支上修改&#xff0c;修改完成稳定后再合并到主分支上。 或者几个人合作写一份代码&#xff0c;每个人各一个分支&#xff0c;测试稳定再合并到主分支上。 在git gui选择菜单栏“分支”&#xff0…

centos7安装hadoop 单机版

1.解压 &#xff08;1&#xff09;将hadoop压缩包复制到/opt/software路径下 &#xff08;2&#xff09;解压hadoop到/opt/module目录下 [rootkb135 software]# tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/ &#xff08;3&#xff09;修改hadoop属主和属组 [rootkb135 m…

VirtualBox虚拟机安装Centos7详细教程图解

一、前期准备工作&#xff1a; 1、虚拟机下载 VirtualBox版本&#xff1a;7.0.6 下载 VirtualBox 的下载页面&#xff1a;https://www.virtualbox.org/wiki/Downloads VMWare 虚拟机软件&#xff08;收费的&#xff0c;要使用请购买正版软件&#xff09;的官网&#xff1a;…

Springboot中sharding-jdbc的API模式并使用自定义算法

Springboot中sharding-jdbc的API模式并使用自定义算法 可配合AbstractRoutingData使用切换数据源 程序用到了AbstractRoutingData来切换数据源&#xff08;数据源是自定义的格式编写并没有用springboot的自动装配的格式写&#xff09;&#xff0c;但是又用到sharding-jdbc进行…

pycharm添加虚拟环境以及虚拟环境安装pytorch

file、settings、interpreter、add interpreter、add local interpreter 记住不要勾选inherit&#xff0c;不然会把主环境的东西继承到虚拟环境。 创建前可以先点existing看看有没有已经建好的虚拟环境 有的时候pycharm有问题&#xff0c;创建了虚拟环境没有显示。找一个.py文…

交通网络分析性能再升级,SuperMap iServer新增开启SSC分析模型

导语 SSC分析模型&#xff0c;全名SuperMap Short Cut&#xff0c;底层采用Contraction Hierarchies&#xff08;简称CH&#xff09;算法&#xff0c;该算法旨在通过对图形进行预处理和优化来降低最佳路径分析的时间复杂度。SuperMap iServer 11i&#xff08;2023&#xff09;&…