spring boot资源文件配置读取
一般业务配置,尽量新建自己的配置文件,来读取,而不是配置在application.properties或application-*.properties或yml/yaml配置中。
application.properties或application-*.properties中如果配置了中文内容,必须得转成Unicode码,否则读取乱码。
转Unicode码可以使用jdk自带工具,cmd切换到jdk下的bin目录,打开native2ascii.exe,然后在下面输入你的中文,回车显示Unicode码,复制到配置文件中来。
整个资源文件中文切换Unicode:cmd切换到jdk下的bin目录,输入native2ascii -encoding utf-8 源文件名.properties 目标文件名.properties
springboot默认properies配置文件内部源代码使用ISO-8859-1编码,即使更改这文件属性编码也是无效的,详细可以参考这篇博文:https://blog.csdn.net/formemorywithyou/article/details/96473169
但yml/yaml中却可以配置中文,正常读取,具体源码也可参考上述地址。
而自定义配置文件,可以指定编码获取,所以,建议业务配置新建自己的配置文件存储,读取。
另外,如果同时存在application yml和properties配置文件,properties中的配置会覆盖yml中相同配置。
分三种方式,读取资源配置
1,通过@value("${key}")获取配置值
在application.properties中,配置:demo.title=\u6d4b\u8bd5\u6d4b\u8bd5
这里因为是springboot默认配置,所以中文要转Unicode码,不然乱码,见上面文字说明。
然后,在test类中的对应属性上通过@value("${demo.title}")加载
注意,如果配置在自定义文件中,还需要指定资源文件位置,这里是直接配置在application.properties默认配置中的。
@RunWith(SpringRunner.class)
@SpringBootTest
public class applicationTest {
@Value("${demo.title}")
private String title;
@Test
public void testProperties()throws Exception{
System.out.println(title);
}
}
2,通过key的前缀,统一获取配置值
继续读取【在application.properties中,配置:demo.title=\u6d4b\u8bd5\u6d4b\u8bd5】
新建个TestPropertis类,类头部通过注解@ConfigurationProperties(prefix="demo")设置properties key的前缀
类内部通过属性key后缀来获取值
@Component
@ConfigurationProperties(prefix="demo")
public class TestPropertis { private String title; //setter getter...
}
注意:使用注解@ConfigurationProperties需要引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
在读取的类中通过@Resource引入TestProperties
@RunWith(SpringRunner.class)
@SpringBootTest
public class applicationTest {
@Resource
private TestPropertis testPropertis;
@Test
public void testProperties2()throws Exception{
System.out.println("TEST----------"+testPropertis.getTitle());
}
}
3、自定义配置文件,通过key前缀统一获取
在src/main/resources新建一个demo.properties,文件属性确保UTF-8
在文件中配置示例:
demo.name=小小灰
demo.sex=M
然后新建一个类:TestDemoPropertis,类头部加入3个注解
@Component //生成实例,方便springboot调用
@ConfigurationProperties(prefix="demo") //统一设置资源文件key的前缀 //类中的每个字段为key的对应后缀
@PropertySource(value={"classpath:demo.properties"},encoding="utf-8")
//指定配置资源文件位置,这里是string数组,可以多个
//encoding必须加上,如果要读取中文,不然乱码,因为springboot源码加载properties是以ISO-8859-1读取的
@Component
@ConfigurationProperties(prefix="demo")
@PropertySource(value={"classpath:demo.properties"},encoding="utf-8")
public class TestDemoPropertis { private String name;
private String sex;
//setter getter...
}
注意:使用@ConfigurationProperties要引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
最后,同上一种在类中通过Resource引入TestDemoPropertis
@RunWith(SpringRunner.class)
@SpringBootTest
public class applicationTest {
@Resource
private TestDemoPropertis testDemoPropertis;
@Test
public void testProperties3()throws Exception{
System.out.println("TEST DEMO----------"+testDemoPropertis.getName()+"-----"+testDemoPropertis.getSex());
}
}
spring boot资源文件配置读取的更多相关文章
- spring 及 spring boot 资源文件配置
Spring配置文件引入xml文件: <import resource=" " />标签使用总结 https://www.cnblogs.com/javahr/p/83 ...
- Spring Boot属性文件配置文档(全部)
This sample file is meant as a guide only. Do not copy/paste the entire content into your applicatio ...
- spring boot 日志文件配置(logback-spring.xml)亲测可用!
问题描述:如何配置springboot项目,通过日志配置,使之输出自定义日志. 详细文章:https://blog.csdn.net/gebitan505/article/details/701421 ...
- SpringBoot - 资源文件配置读取
Examp1:读取核心配置文件信息application.properties的内容 方法一:使用@Value方式(常用) 1.application.properties中自定义参数 test.ms ...
- Spring读取外部的资源配置文件—@PropertySource和@Value实现资源文件配置
通过@PropertySource可以指定读取的配置文件,通过@Value注解获取值: @PropertySource注解主要是让Spring的Environment接口读取属性配置文件用的,标识在@ ...
- 51. spring boot属性文件之多环境配置【从零开始学Spring Boot】
原本这个章节是要介绍<log4j多环境不同日志级别的控制的>但是没有这篇文章做基础的话,学习起来还是有点难度的,所以我们先一起了解下spring boot属性文件之多环境配置,当然文章中也 ...
- Spring Boot 外部化配置(一)- Environment、ConfigFileApplicationListener
目录 前言 1.起源 2.外部化配置的资源类型 3.外部化配置的核心 3.1 Environment 3.1.1.ConfigFileApplicationListener 3.1.2.关联 Spri ...
- Spring Boot 2.0 配置图文教程
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 本章内容 自定义属性快速入门 外化配置 自动配置 自定义创建 ...
- Spring boot 的自动配置
Xml 配置文件 日志 Spring Boot对各种日志框架都做了支持,我们可以通过配置来修改默认的日志的配置: #设置日志级别 logging.level.org.springframework=D ...
随机推荐
- delete 和 splice 删除数组中元素的区别
delete 和 splice 删除数组中元素的区别 ` var arr1 = ["a","b","c","d"]; d ...
- 工具类--MD5Utils
public class MD5Utils { private static final String[] HEX_DIGITS = { "0", "1", & ...
- WIN7下怎么安装iis教程
点击开始→控制面板,然后再点击程序,勿点击卸载程序,否则到不了目标系统界面. 2 然后在程序和功能下面,点击打开和关闭windows功能. 3 进入Windows功能窗口,然后看到internet信息 ...
- 树莓派自动播报温湿度到QQ空间、微博
原文链接 https://aoaoao.me/951.html 这是个比较无聊的应用...灵感来自于一个叫做“古城钟楼”的微博账号,此账号每天都会定点报时,除此之外没有其他任何内容,以此吸引了近50万 ...
- python_way day15 HTML-DAY2、 回顾HTML-CSS 标签(css强制生效),JS(数据类型,时间处理,作用域)
python_way day15 HTML-DAY2 html-css回顾 javascript 一.html-css回顾 增加默认值: . 强制生效,就算在上面,被覆盖上了也会生效 解决缩小页面混乱 ...
- SPOJ MAXMATCH - Maximum Self-Matching (FFT)
题目链接:MAXMATCH - Maximum Self-Matching Description You're given a string s consisting of letters 'a', ...
- centos7下搭建nfs服务
现在有3台服务器 s1(主),s2(从), s3(从)需要实现文件实时同步,我们可以安装Nfs服务端和客户端来实现! 一.安装 NFS 服务器所需的软件包: yum install -y nfs-ut ...
- VSCode 中文乱码
方式一 vscode 菜单栏: 文件 >> 首选项 >> 设置 搜索: "files.autoGuessEncoding": false, 改为: &qu ...
- to meet you Java多线程与并发
2: hotspot中对象在内存的布局是分3部分 对象头 实例数据 对其填充 这里主要讲对象头:一般而言synchronized使用的锁对象是存储在对象头里的,对象头是由Mark Word和Class ...
- 从零开始搭建系统1.3——Tomcat安装及配置
首先安装jdk,手动解压JDK的压缩包,然后设置环境变量 1.卸载自带openjdk 查询OpenJDK rpm -qa|grep java 批量卸载所有名字包含jdk的已安装程序.命令行: rpm ...