SpringBoot配置文件绑定到Java Bean

boot读取配置文件

    • 1. yml配置文件
    • 2. 绑定方式1
    • 3. 绑定方式2
      • 3.1 依赖.
      • 3.2 boot 中提供的属性装配功能。

1. 在某些业务中,需要将类的配置写到配置文件中, 不在代码中写死配置。
2. 所以需要读取配置文件(yaml, properties) 读取到Java Bean中。
3. 本文以oss对象存储配置为demo。两种方式初始化配置文件。

1. yml配置文件

server:port: 8888spring:application:name: hello-world# oss对象存储配置
oss-constant:endpoint: secretaccess-key: keysecret-key: keybucket: bucket

2. 绑定方式1

使用@Value注解, 注入配置文件的值。
好处:能够选择性的配置。能够类名.属性。
坏处:写死了@Value(value=“xxx”) 前缀,项目打包后了不方便修改。

package top.bitqian.hello.constant;import lombok.Data;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;/*** 加载oss对象存储配置* @author echo lovely* @date 2021/3/20 09:30*/@Data
@Component
public class OssLoadConstant implements InitializingBean {@Value("${oss-constant.endpoint}")private String endpoint;@Value("${oss-constant.access-key}")private String accessKeyId;@Value("${oss-constant.secret-key}")private String accessKeySecret;@Value("${oss-constant.bucket}")private String bucketName;public static String ENDPOINT;public static String ACCESS_KEY_ID;public static String ACCESS_KEY_SECRET;public static String BUCKET_NAME;@Overridepublic void afterPropertiesSet() {// 初始化设置值ENDPOINT = this.endpoint;ACCESS_KEY_ID = this.accessKeyId;ACCESS_KEY_SECRET = this.accessKeySecret;BUCKET_NAME = this.bucketName;}}

3. 绑定方式2

3.1 依赖.

    <dependencies><!-- 属性装配提示 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><executions><execution><!-- 打包时排除 属性装配提示插件 --><configuration><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId></configuration></execution></executions></plugin></plugins></build>

3.2 boot 中提供的属性装配功能。

yaml中的前缀和下面的ConfigurationProperties的prefix对应。
yaml中的属性和实体类属性对应。(yaml中的横杠可以转驼峰)

package top.bitqian.hello.constant;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;/*** 此Java类与配置文件绑定了.* @author echo lovely* @date 2021/3/20 09:36*//*1. 绑定方法1:@Component@ConfigurationProperties(prefix = "oss-constant")2. 绑定方法2:实体配置类, @ConfigurationProperties(prefix = "oss-constant")在配置类上开启和配置文件(yml, properties)绑定 :@EnableConfigurationProperties(value = {OssConstantConfig.class})*/@Data
@Component
@ConfigurationProperties(prefix = "oss-constant")
public class OssConstantConfig {private String endpoint;private String accessKey;private String secretKey;private String bucket;
}

获取的话,从容器中获取就行了。配置文件中的值会自动装配到Java Bean中。

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

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

相关文章

Ruby学习-第二章

第二章 类继承&#xff0c;属性&#xff0c;类变量 1.如何声明一个子类 class Treasure < Thing 这样Thing类中的属性name&#xff0c;description都被Treasure继承 2.以下三种方式传入父类initialize方法的参数分别是什么&#xff1f; # This passes a, b, c to the superc…

面向接口编程的优点_为什么我们要面向接口编程

到底面向&#xff1f;编程面向过程编程( ProcedureOriented、简称 PO) 和 面向对象编程( ObjectOriented、简称 OO) 我们一定听过&#xff0c;然而实际企业级开发里受用更多的一种编程思想那就是&#xff1a;面向接口编程( Interface-Oriented)&#xff01;接口这个概念我们一定…

设计模式:设计原则

程序设计的原则1. 单一设计原则2. 接口隔离原则3. 依赖倒转4. 里氏替换原则5. 开闭原则6. 迪米特原则7. 合成复用1. 单一设计原则 每一个类只负责做自己的的功能。不能跨越到其它类。 不合理 package top.bitqian.principle.single_responsibility;/*** author echo lovely* …

Android数据库LitePal的存储操作

本文属于转载&#xff0c;在此声明&#xff0c;出处&#xff1a;http://blog.csdn.net/guolin_blog/article/details/38556989 并且感谢guolin分享了这么精彩的博文。以下正文&#xff1a; 经过前面几篇文章的学习&#xff0c;我们已经把LitePal的表管理模块的功能都很好地掌握…

程控电源测试微安电流模式_无缝隙源和负载的切换:双向程控电源的一大门槛...

目前采用电池供电的直流无刷电机驱动的设备越来越多&#xff0c;从电动工具&#xff0c;无人机、机器人、再到电动汽车等。然而电机驱动器和电池的管理始终是研发工程师不得不面对的一道难题。电动机利用的是“电生磁”原理&#xff0c;把电能转换成机械能。但制动&#xff0c;…

前端学习(1324):anysc关键字

//只能出现再异步函数中 暂停异步函数得执行 async function fn() {throw 发生勒一些错误;return 123; } //console.log(fn()) fn().then(function(data) {console.log(data); }).catch(function(err) {console.log(err); }) 运行结果

Pacman主题下给Hexo增加简历类型

原文 http://blog.zanlabs.com/2015/01/02/add-resume-type-to-hexo-under-pacman-theme/ 背景 虽然暂时不找工作&#xff0c;但是想着简历也是个向别人推销自己的好东西。然后也想着折腾点新的东西&#xff0c;如此&#xff0c;这般&#xff0c;便想着研究起写个简历了。形式不…

屏幕输出语句_C语言快速入门——表达式与语句

表达式表达式是由运算符和操作数组合构造成。最简单的表达式是一个单独的操作数&#xff0c;以此作为基础&#xff0c;结合语言自身支持的操作符&#xff0c;就可以建立复杂的表达式。下面是一些表达式&#xff1a;从这里可以看到&#xff0c;操作数可以是数据常量(4&#xff0…

前端学习(1325):await关键字

async function p1() {return p1; } async function p2() {return p2; } async function p3() {return p3; } async function run() {let r1 await p1();let r2 await p2();let r3 await p3();console.log(r1);console.log(r2);console.log(r3);} run(); 运行结果

接口测试客户端的搭建

一. 引言 随着公司项目整体架构由原来的多渠道各自为战&#xff0c;向着建立统一的服务端应用&#xff0c;从而为各渠道提供服务调用的转变&#xff0c;服务端应用接口测试成了我们日常工作中的重要任务之一。经过半年的摸索和项目实战&#xff0c;我们已经掌握了一套接口测试的…

python对excel数据求和_96、python操作excel求和

这里介绍如何用python来自动完成我们的excel工作。本文的目的是展示一些常见的Excel任务&#xff0c;以及如何在python pandas中执行类似的任务。例子微不足道&#xff0c;但重要的是通过这个例子来循序渐进的介绍pandas简单到复杂的功能。展示pandas如何利用Python的完整的模块…

前端学习(1327):node全局对象global

global.console.log(我是歌谣); global.setTimeout(function() {console.log(123); }, 2000) 运行结果

4字节 经纬度_java 获取本机经纬度

package com.smm.web.mtower.util;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.URL;/*** Created by zhenghao on 2016/6/24.* 当前位置处理工具*/public class LocationUtil {/*…

C#秘密武器之反射——基础篇

先来一段有用的反射代码 namespace Calculator { public interface Iwel { String Print(); } } namespace Calculator { public class Arithmetic:Iwel { /// <summary> /// 没有带参数的构造函数 /// </summary> public Arithmetic() {} public Arithmetic(i…

python社区版可以用库么_应用Python,你不但能够得到出色的小区适用和普遍的库集...

哪样计算机语言最好是&#xff1f;这个问题很有可能始终不容易找答案。萝卜青菜&#xff0c;各有所好&#xff0c;AI技术工程师和生物学家能够依据新项目必须&#xff0c;从诸多计算机语言中挑选最合适自身的。选Python還是选Java?2020年&#xff0c;顶级程序猿最应当把握的7种…

Python3 etree, requests库抓取bt

bt种子抓取1. 抓取你想要的数据2. 爬取bt种子3. 抓取磁力链迷上了追番.. . bt种子xunlei来解决。 推荐一个网站https://mikanani.me。可以搜索你想要的动漫… 以bt的形式下载&#xff0c;或者复制磁力链。 1. 抓取你想要的数据 需要了解requests, etree库&#xff0c;etree用…

ecshop各个文件夹作用

Images文件夹&#xff1a;这个文件夹下有子文件夹&#xff0c;在这些子文件夹下面存放着当前网站商品的原始图片和缩略图。这些子文件夹命名有规律的&#xff0c;它们的文件名是它们目录下商品加入 的年月份。也就是说在同一个月份加入的商品&#xff0c;它们的图片是在同一个文…

unity2018关联不到vs_现实VS真爱:远嫁的幸福和悲哀

陆拾一 LUSHIYI《现实VS真爱&#xff1a;远嫁的幸福和悲哀》Part.1你有过远嫁的犹豫或者经历吗&#xff1f;关于这个话题&#xff0c;我从未写过。今天借着一封读者的来信&#xff0c;与大家聊一聊。拾一&#xff0c;你好。我跟男朋友在一起两年了&#xff0c;现在到了谈婚论嫁…