Open MoonLord-LM opened 2 months ago
1. 自定义 PropertiesPropertySourceLoader
你可以创建一个自定义的 PropertiesPropertySourceLoader 类,继承 PropertySourceLoader 接口,并实现 load 方法来加载 .properties 文件,并确保以 UTF-8 编码进行加载。
java
复制代码
import org.springframework.boot.env.PropertySourceLoader;
import org.springframework.core.env.PropertySource;
import org.springframework.core.env.PropertiesPropertySource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.EncodedResource;
import org.springframework.core.io.support.PropertiesLoaderUtils;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.Properties;
public class CustomPropertiesPropertySourceLoader implements PropertySourceLoader {
@Override
public String[] getFileExtensions() {
// 指定支持的文件扩展名
return new String[] { "properties" };
}
@Override
public List<PropertySource<?>> load(String name, Resource resource) throws IOException {
// 以 UTF-8 编码加载 .properties 文件
EncodedResource encodedResource = new EncodedResource(resource, StandardCharsets.UTF_8);
Properties properties = PropertiesLoaderUtils.loadProperties(encodedResource);
PropertySource<?> propertySource = new PropertiesPropertySource(name, properties);
return List.of(propertySource);
}
}
2. 注册自定义加载器
在 spring.factories 文件中注册这个自定义的 PropertySourceLoader。spring.factories 文件通常位于 src/main/resources/META-INF/ 目录下。
properties
复制代码
# META-INF/spring.factories
org.springframework.boot.env.PropertySourceLoader=\
com.example.CustomPropertiesPropertySourceLoader
https://stackoverflow.com/questions/37436927/utf-8-encoding-of-application-properties-attributes-in-spring-boot