springboot中获取配置文件中属性值的几种方式

目录

    • 第一章、使用@Value注解
    • 第二章、使用@PropertySource注解
    • 第三章、使用@Configurationproperties注解
    • 第四章、使用Java Properties类
    • 第五章、使用Environment接口

友情提醒:

先看文章目录,大致了解文章知识点结构,点击文章目录可直接跳转到文章指定位置。有用记得关注

第一章、使用@Value注解

①@Value注解用于获取配置文件中的属性定义并绑定到Java Bean或属性中。在核心配置文件applicatin.properties中,添加两个自定义配置项school.name和school.website。
在这里插入图片描述

②在SpringBootController中定义属性,并使用@Value注解或者自定义配置值,并对其方法进行测试

package com.example.springboot.web;import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;@Controller
public class SpringBootController {@Value("${school.name}")private String schoolName;@Value("${school.websit}")private String schoolWebsit;@RequestMapping(value = "/springBoot/first")@ResponseBodypublic String say() {return schoolName + "------" + schoolWebsit;}
}

③访问浏览器成功,说明成功通过@value读取配置的属性值
在这里插入图片描述

第二章、使用@PropertySource注解

@PropertySource(“classpath:coremail.properties”)是指定配置文件位置的注解。Spring 可以在类路径下找到并加载这个coremail.properties属性文件。需要再在属性上面搭配@value注解使用其中定义的属性值。
在这里插入图片描述
或者这样
在这里插入图片描述

第三章、使用@Configurationproperties注解

@Configurationproperties(prefix=”xxx”)prefix的作用是区分同名配置,如果不指定,那么会去配置文件中寻找与该类的属性名一致的配置文件。
prefix怎么使用呢?
在生产环境配置文件applicatin-product.properties中,有自定义的三个school前缀的配置项
在这里插入图片描述

在核心配置文件applicatin.properties中激活生产环境,这里的product对应文件名application-produc的横杠后面的produc
在这里插入图片描述
当指定prefix之后,就不需要再在属性上面搭配@value注解使用,因为当指定前缀school之后,属性就会自动注入
在这里插入图片描述

第四章、使用Java Properties类

Properties prop = new Properties();
try (InputStream input = new FileInputStream("config.properties")) {prop.load(input);String dbUrl = prop.getProperty("db.url");String dbUser = prop.getProperty("db.user");String dbPassword = prop.getProperty("db.password");// 使用读取到的属性进行后续操作
} catch (IOException ex) {ex.printStackTrace();
}

第五章、使用Environment接口

配置文件如图:
在这里插入图片描述

获取配置文件中的属性值:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;@Component
public class MyComponent {public static String Value1 ;public static String Value2 ;@Autowiredprivate Environment environment;public void getPropertyFromEnvironment() {Value1 = environment.getProperty("school.name");Value2 = environment.getProperty("school.buile.age");System.out.println("Value1: " + Value + "Value1: "+Value2 );}
}

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

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

相关文章

DC-磁盘管理(23国赛真题)

2023全国职业院校技能大赛网络系统管理赛项–模块B:服务部署(WindowServer2022) 文章目录 题目配置步骤组成RAID 5,磁盘分区命名为卷标H盘:Raid5。手动测试破坏一块磁盘,做RAID磁盘修复,确认RAID 5配置完毕。验证查看Raid5(打开磁盘管理器,查看raid信息)Raid5磁盘修复…

JavaEE学习笔记 2024-1-25 --VUE的入门使用

上一篇 个人整理非商业用途,欢迎探讨与指正!! 文章目录 14.VUE基础14.1VUE的入门使用14.2条件判断14.3循环渲染14.4v-bind绑定标签属性14.5v-model表单标签的双向绑定14.6事件处理14.7axios 14.VUE基础 前端框架 UI框架:页面渲染Bootstrap,L…

Android 车联网——CarMediaService介绍(十九)

一、简介 CarMediaService 是安卓汽车平台中的一个服务,用于管理和控制车辆媒体系统的播放和音频功能。该服务允许车主和乘客通过车辆媒体系统访问音乐、广播、播客等媒体内容,并提供了一系列功能来控制和管理这些媒体资源。 主要功能 媒体播放控制:该服务允许车主和乘客通…

判断是否是IE浏览器

在我们开发页面中总会遇到解决兼容问题,一般通过css hack根据不同浏览器写不同的css,或者判断浏览器加载不同的模块。在这里我们将分享判断ie的方法 一、IE条件注释(h5方法) IE的判断写法只兼容到IE9,IE10及其以上只能显示非IE的…

Python中如何使用urllib3进行http请求 (一)

Urllib3是什么以及为什么使用它? Urllib3是一个强大且用户友好的Python HTTP客户端。它被设计用来替代默认的Python库进行HTTP请求的urllib2。相比于urllib2,Urllib3具有许多优势,包括连接池、线程安全和对HTTP/1.1的支持。此外,…

Coremail启动鸿蒙原生应用开发,打造全场景邮件办公新体验

1月18日,华为在深圳举行鸿蒙生态千帆启航仪式,Coremail出席仪式并与华为签署鸿蒙合作协议,宣布正式启动鸿蒙原生应用开发。作为首批拥抱鸿蒙的邮件领域伙伴,Coremail的加入标志着鸿蒙生态版图进一步完善。 Coremail是国内自建邮件…

编程笔记 html5cssjs 068 JavaScrip Boolean数据类型

编程笔记 html5&css&js 068 JavaScrip Boolean数据类型 一、Boolean数据类型二、运算符三、代码示例小结 JavaScript中的Boolean数据类型详解及示例。在JavaScript中,Boolean(布尔)数据类型是一种基本数据类型,它有两个可…

使用golang发送邮件

目前大多应用都是手机登录,但是作为开源的一个软件,或者是私有的一个应用,那么使用手机短信接收验证码成本比较高,使用邮箱相对更容易, 这里从tinode中取出发邮件的部分做一个测试, 其中邮箱一般需要设置…

Unity异步加载场景

前言 Unity中常见的加载场景就是异步加载场景,此博客对异步加载场景进行详细介绍 简单易懂好用。含有加载进度,加载动画等。(文末附工程) 代码分析 主要脚本MaskPanel ,作为单例存在于场景中,下面对此脚…

Angular组件(二) 分割面板ShrinkSplitter

Angular组件(二) 分割面板ShrinkSplitter 前言 在Angular组件(一) 分割面板ShrinkSplitter文章中我们实现了Splitter组件,后来在业务场景中发现在开关右侧容器和底部容器时,使用起来不方便,ngModel绑定的值始终是左侧容器和顶部容器的大小&…

Flutter App 生命周期观察监听

前言 本文主要讲解两种 Flutter生命周期观察监听 方式一:Flutter SDK 3.13 之前的方式,WidgetsBindingObserver; 方式二:Flutter SDK 3.13 开始的新方式,AppLifecycleListener; 测试平台:IO…

走进水稻种植教学基地可视化:科技与农业知识的完美结合

随着科技的不断发展,农业领域也在不断创新和进步。水稻种植教学基地可视化系统是一种基于现代信息技术手段的教学方式,通过虚拟现实、3D建模等技术,将水稻种植的全过程进行模拟和展示。这种教学方式打破了传统农业教学的局限性,使…

idea中yml文件没有提示解决办法

两步解决yml文件不显示提示,yaml文件显示提示问题 1、在插件中心,先下载下图两个插件 2、在Editor》File Types新增文件类型,文件名匹配规则需要将yaml和yml的都加上,加好之后,重启idea,即刻生效。

专利背后的故事 | 一种基于FTP文件的下载方法

Part 01 专利发明的初衷 FTP下载工具俗称为FTP工具,是我们常用的一个服务。FTP分为客户端和服务器端:FTP服务器被用于存储文件;FTP客户端用于通过FTP协议访问位于FTP服务器端上的资源,可以上传和下载文件。 在现实使用中可能会…

C++进阶--继承

概念 继承,允许一个类(称为子类或派生类)从另一个类(称为父类或基类)继承属性和方法。 继承的主要目的是实现代码的重用和构建类之间的层次关系。通过继承,子类可以获得父类的特性,包括数据成员…

嵌合抗体介绍-泰克生物

一.嵌合抗体简介 人-鼠嵌合抗体,即抗体的可变区来自鼠单克隆抗体,而恒定区则来自人的抗体。它是通过从杂交瘤细胞分离出功能性可变区基因,与人Ig恒定区基因连接,插入适当表达载体,转染宿主细胞表达产生。嵌合抗体既保留…

centOS+nodejs+mysql阿里云部署前后端个人网站

centOSnodejsmysql阿里云部署前后端个人网站 参考: 部署NodeExpressMySQL项目到阿里云轻量应用服务器 阿里云轻量应用服务器部署Node.jsReactMongoDB前后端分离项目 参考:在阿里云上部署nodejs服务 https 部署的原理就是你在本地测试的时候在地址栏&am…

给零基础朋友的编程课12 代码

给零基础朋友的编程课12 下 - 仿制品7 案例_哔哩哔哩_bilibili 源代码: // 色表 // 桃红 254,181,167 // 粉红 255,208,199void setup() {size(1000,750);background(254,181,167); }void draw() {// 绘制画框stroke(255,208,199);strokeWeight(28);noFill();rect…

Cmake编译Opencv3.3.1遇到有些文件无法下载的错误解决:

前言: 对于,opencv有些配置文件错误并未致命,所以,有错误也不影响后续的编译:但是,后引用如果要用,在回过头来还是要解决的。 问题表述: 比如,有些文件下载的错误&am…

Linux可视化管理

记得看目录哦! 1. webmin2. webmin安装及配置2.1 把软件传到opt目录下的webmin目录2.2 解压rpm -ivh webmin-1.700-1.noarch.rpm2.3 重置webmin的root密码2.4 修改webmin的端口2.5 重启webmin2.6 放开6666端口的防火墙2.7 网址输入ip:端口号 3. webmin的…