一般业务配置,尽量新建自己的配置文件,来读取,而不是配置在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资源文件配置读取的更多相关文章

  1. spring 及 spring boot 资源文件配置

    Spring配置文件引入xml文件: <import resource=" " />标签使用总结 https://www.cnblogs.com/javahr/p/83 ...

  2. Spring Boot属性文件配置文档(全部)

    This sample file is meant as a guide only. Do not copy/paste the entire content into your applicatio ...

  3. spring boot 日志文件配置(logback-spring.xml)亲测可用!

    问题描述:如何配置springboot项目,通过日志配置,使之输出自定义日志. 详细文章:https://blog.csdn.net/gebitan505/article/details/701421 ...

  4. SpringBoot - 资源文件配置读取

    Examp1:读取核心配置文件信息application.properties的内容 方法一:使用@Value方式(常用) 1.application.properties中自定义参数 test.ms ...

  5. Spring读取外部的资源配置文件—@PropertySource和@Value实现资源文件配置

    通过@PropertySource可以指定读取的配置文件,通过@Value注解获取值: @PropertySource注解主要是让Spring的Environment接口读取属性配置文件用的,标识在@ ...

  6. 51. spring boot属性文件之多环境配置【从零开始学Spring Boot】

    原本这个章节是要介绍<log4j多环境不同日志级别的控制的>但是没有这篇文章做基础的话,学习起来还是有点难度的,所以我们先一起了解下spring boot属性文件之多环境配置,当然文章中也 ...

  7. Spring Boot 外部化配置(一)- Environment、ConfigFileApplicationListener

    目录 前言 1.起源 2.外部化配置的资源类型 3.外部化配置的核心 3.1 Environment 3.1.1.ConfigFileApplicationListener 3.1.2.关联 Spri ...

  8. Spring Boot 2.0 配置图文教程

    摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 本章内容 自定义属性快速入门 外化配置 自动配置 自定义创建 ...

  9. Spring boot 的自动配置

    Xml 配置文件 日志 Spring Boot对各种日志框架都做了支持,我们可以通过配置来修改默认的日志的配置: #设置日志级别 logging.level.org.springframework=D ...

随机推荐

  1. QinQ 技术解析

    目录 1. 概述 2. QinQ 的产生背景 3. QinQ的作用及原理 4. QinQ 技术的优点 5. QinQ 的报文结构 6. QinQ的实现方式 (1) 基本QinQ (2) 灵活QinQ ...

  2. UVA 11178 Morley's Theorem (坐标旋转)

    题目链接:UVA 11178 Description Input Output Sample Input Sample Output Solution 题意 \(Morley's\ theorem\) ...

  3. 0 ‘+new Array(017)’ 输出? js+相当于Number()类型转换

    网站搬迁,给你带来的不便敬请谅解! http://www.suanliutudousi.com/2017/10/20/new-array017-%E8%BE%93%E5%87%BA%EF%BC%9F- ...

  4. 2018湘潭大学程序设计竞赛【A】

    题目链接:https://www.nowcoder.com/acm/contest/105/A 题意:给你起始和结束的天时分,让你算总秒数. 题解:输入格式.注意long long.签到题. #inc ...

  5. Java中的数据结构有哪些?HashMap的工作原理是什么?

    Java中常用数据结构 常用的数据结构有哈希表,线性表,链表,java.util包中有三个重要的接口:List,Set,Map常用来实现基本的数据结构 HashMap的工作原理 HashMap基于ha ...

  6. 项目中UX设计1到2的设计提升总结

  7. idea一直在copying resources或者一直在build,卡住不动,问题已解决

    IDE在启动项目的过程中,一直copying,或者是build一直卡住,需要在modules中配置下,把target文件夹移出resource folder 同时,在此之前,我还屏蔽了项目中pom.x ...

  8. Mysql优化-分区

    分区简介 分区是根据一定的规则,数据库把一个表分解成多个更小的.更容易管理的部分.就访问数据库应用而言,逻辑上就只有一个表或者一个索引,但实际上这个表可能有N个物理分区对象组成,每个分区都是一个独立的 ...

  9. 笔记32 SpringMVC中使用静态资源、处理中文乱码

    一.静态资源的使用 在WebConfig.java中有如下代码段 @Override // 配置静态资源处理 public void configureDefaultServletHandling(D ...

  10. python_django_template_url反向解析

    什么是url反向解析? 一般我们网址在diango内部匹配顺序为:网址→ url → views →  templates → <a href="suck/good/"> ...