Spring Boot属性注入乱码解决

Spring Boot属性注入乱码解决

1. 乱码问题

在做springboot属性注入时,即在application.properties文件中配置如下中文:

book.name=三国演义
book.author=罗贯中
book.price=300

待在Book.java中进行属性注入的时候,

@Component
@ConfigurationProperties(prefix = "book")
public class Book {
    private String name;
    private String author;
    private Integer price;
    ...geter/seter....
}

会出现乱码问题,输出到页面显示如下:

Book{name='三国演义', author='罗贯中', price=300}

2. 原因分析

原因:application.properties默认采用ISO-8859-1加载

所以尽管配置了编码格式为UTF-8但是还是会出现注入乱码。

3. 乱码解决

  1. 查看了网上解决乱码的方式,大部分都是如下:

    server.tomcat.uri-encoding=UTF-8
    

    或者在controller上配置编码格式,但大多都是无用的。

  2. 我的解决方案:

    1. 使用自定义配置的文件
    2. 使用yml/yaml配置文件

3.1 使用自定义配置的文件

使用自定义的配置文件,并在bean中使用@PropertySource引入自定义的配置文件。

如:在resources下创建config目录,并创建beans.properties文件。

book.name=三国演义
book.author=罗贯中
book.price=300

另外在Book.java中使用注解引入该配置文件

@Component
@PropertySource(value = "classpath:config/beans.properties",encoding = "UTF-8")
@ConfigurationProperties(prefix = "book")
public class Book {
    private String name;
    private String author;
    private Integer price;
}

注:

  1. @PropertySource(value = “classpath:config/beans.properties”,encoding = “UTF-8”)中的classpth路径要是beans.properties在resources下的相对路径。
  2. @PropertySource引入的文件名不要使springboot默认的application.properties文件。

测试过后,页面中文正常展示。

3.2 使用yml/yaml配置文件

注:yml/yaml配置文件默认的编码为UTF-8。所以对中文友好。

book:
  name: 三国演义
  author: 罗贯中
  price: 300

网页显示:

Book{name='三国演义', author='罗贯中', price=300}

4. IDEA中修改项目编码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qeIcL1jN-1619867743268)(C:\Users\24016\Desktop\store\spring boot\img\1619867574631.png)]

‘三国演义’, author=‘罗贯中’, price=300}


## 4. IDEA中修改项目编码

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210501191559217.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyMjc4MzIw,size_16,color_FFFFFF,t_70#pic_center)



版权声明:本文为qq_42278320原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。