Springboot新增配置文件

一、在resources下面创建test.properties文件

内容如下:

com.test.name=zhangys
com.test.age=20

二、创建User

package com.hundsun.springcloud.bean;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

/**
 * @Description:
 * @author:zhangys
 * @date:Created in 13:14 2019/6/5
 * @Modified By:
 */
@Configuration
@PropertySource(value = "classpath:test.properties")
@ConfigurationProperties(prefix = "com.test")
public class User {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

三、创建ResourceController

package com.hundsun.springcloud.resources;

import com.hundsun.springcloud.bean.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Description:
 * @author:zhangys
 * @date:Created in 10:53 2019/6/5
 * @Modified By:
 */
@RestController
@RequestMapping("/resource")
public class ResourceController {
    @Autowired
    private User user;
    @RequestMapping(value = "/getTestProperties")
    public String getTestProperties(){
        return user.toString();
    }
}

四、测试如下:

浏览器输入:http://localhost:8080/resource/getTestProperties

 

五、多个环境的配置文件

Spring Boot 支持程序启动时在配置文件applicaition.yml 中指定环境的配置文件。

application-test.properties——测试环境

application-dev.properties——开发环境

application-prod.properties——生产环境

 

在application.yml 中加上spring.profiles.active 的配置,该配置指定采用哪一个profiles

spring :
  profiles :
    active: dev

通过 java -jar 这种方式启动程序,并指定程序的配置文件,启动命令如下:

java -jar springbootdemo jar -- spring profiles active=dev

<think>好的,我现在需要解决用户关于Spring Boot配置文件中出现中文乱码的问题。首先,我得回忆一下相关的知识。根据用户提供的引用内容,问题根源在于SpringBoot默认使用ISO-8859-1编码读取.properties文件,而这种编码不支持中文,所以导致乱码。接下来,我需要确认用户的问题是否具体指.properties文件,因为YAML文件可能情况不同。引用[5]提到PropertySourceLoader接口,而引用[3]指出OriginTrackedPropertiesLoader类使用ISO-8859-1编码。所以,默认情况下.properties文件确实会有这个问题。 解决方案方面,用户提供的引用中有几种方法。例如,使用@PropertySource指定编码为UTF-8,但引用[4]提到默认的bootstrap.properties可能无法这样处理。另外,转换为YAML文件可能有效,因为YAML支持UTF-8,如引用[2]和引用[5]提到的YamlPropertySourceLoader可能使用不同编码。还有Unicode转义的方法,用户可能不太喜欢,但确实可行。另外,检查IDE的编码设置是否一致为UTF-8也很重要,避免文件本身保存时编码错误。需要将这些方法整理成结构清晰的步骤,并给出具体示例,比如如何配置application.yml,或者如何添加@PropertySource注解。同时,要提到可能存在的限制,比如bootstrap.properties的特殊情况,可能需要外部化配置或其他方式处理。 最后,生成相关问题,帮助用户深入理解,比如不同配置文件的区别、乱码的其他原因等。确保回答准确,引用正确的来源,如引用[3]和引用[4]中的具体类和方法,增加可信度。</think>### Spring Boot配置文件中文乱码原因及解决方案 #### 一、问题根源 Spring Boot默认使用 **ISO-8859-1** 编码读取`.properties`文件,该编码不支持中文字符[^3][^4]。核心代码逻辑如下: ```java // 源码中的编码设置 new InputStreamReader(resource.getInputStream(), StandardCharsets.ISO_8859_1) ``` 这是导致中文字符显示为乱码的根本原因[^3]。 --- #### 二、解决方案 ##### 1. 使用YAML格式配置文件 将`.properties`改为`.yml`格式,YAML文件默认支持UTF-8编码: ```yaml # application.yml示例 message: 你好,世界! ``` Spring Boot的`YamlPropertySourceLoader`会以UTF-8编码读取YAML文件[^1][^5]。 ##### 2. 手动指定.properties编码 通过`@PropertySource`注解强制指定编码: ```java @Configuration @PropertySource(value = "classpath:custom.properties", encoding = "UTF-8") public class AppConfig { } ``` 此方法仅对非默认配置文件有效(如`custom.properties`)[^4]。 ##### 3. Unicode转义 将中文字符转换为Unicode编码(适用于少量中文): ```properties # application.properties message=\u4F60\u597D\uFF0C\u4E16\u754C\uFF01 ``` ##### 4. 外部化配置 将配置转移到支持UTF-8的环境: - 环境变量 - 启动参数:`java -Dfile.encoding=UTF-8 -jar app.jar` - 云配置中心(如Spring Cloud Config) ##### 5. 检查IDE编码设置 确保IDE(如IntelliJ/Eclipse)的配置文件保存编码为UTF-8: ``` File -> Settings -> Editor -> File Encodings ``` 所有选项设置为UTF-8,并勾选"Transparent native-to-ascii conversion"[^2]。 --- #### 三、特殊场景说明 1. **Bootstrap配置文件**:`bootstrap.properties`无法通过`@PropertySource`指定编码,需优先使用YAML或外部配置[^4]。 2. **Spring Boot 2.4+**:新增`spring.config.use-legacy-processing=true`可尝试兼容旧编码,但非推荐方案。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值