spring使用validation 从配置文件中读取乱码

本文详细介绍了Spring框架中ReloadableResourceBundleMessageSource Bean的正确配置方法,特别是如何设置正确的文件编码方式以避免乱码问题。文章通过具体示例展示了如何指定defaultEncoding属性来确保资源文件的正确读取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

可能是没有加defaultEncoding 这个属性

<bean
id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<!--文件编码方式, 只加fileEncodings不行,要加上defaultEncoding才行-->
<property name="fileEncodings" value="utf-8" />
<property name="defaultEncoding" value="utf-8"/>
<!--对资源文件内容缓存时间单位是秒,120秒后重新加载-->
<property name="cacheSeconds" value="120" />
<property name="basenames">
<list>
<value>classpath:validation/addUser</value>
<value>classpath:validation/insertCompanyFile</value>
<value>classpath:validation/insertGetFile</value>
<!--这里不加.properties后缀是因为上面property中的name是basenames-->
</list>
</property>
</bean>

### 如何使用和配置 `config.properties` 文件 #### 1. 使用 Java 读取 `config.properties` 文件 在 Java 中可以通过 `Properties` 类来加载并解析 `.properties` 文件的内容。如果项目结构中有资源文件夹(通常是 `src/main/resources` 或类似的路径),可以利用 Spring 提供的工具类或者手动实现加载逻辑。 以下是通过 Spring 工具类加载 `config.properties` 的方法[^1]: ```java import org.springframework.core.io.support.PropertiesLoaderUtils; public class ConfigReader { public static void main(String[] args) throws IOException { Properties prop = PropertiesLoaderUtils.loadAllProperties("config.properties"); System.out.println(prop.getProperty("key")); } } ``` 对于 Android 平台,由于其特殊的资源管理机制,通常会从 assets 文件夹中读取配置文件。以下是一个典型的实现方式[^2]: ```java import android.content.Context; import java.util.Properties; public class PropertyUtil { public static String getPropertyValue(Context context, String key) { Properties properties = new Properties(); try { properties.load(context.getAssets().open("config.properties")); return properties.getProperty(key); } catch (Exception e) { e.printStackTrace(); } return null; } } ``` --- #### 2. 配置 DBCP 连接池时使用的 `dbcpconfig.properties` 当使用 Apache Commons DBCP 数据库连接池时,可能需要定义一个单独的配置文件用于存储数据库连接参数。这些参数不包括用户名 (`user`) 和密码 (`password`),因为它们会被显式传递给连接池初始化器[^3]。 下面是一份标准的 `dbcpconfig.properties` 示例: ```properties connectionProperties=useUnicode=true;characterEncoding=utf8 initialSize=5 maxTotal=20 maxIdle=10 minIdle=5 validationQuery=SELECT 1 testOnBorrow=true ``` 上述配置项解释如下: - **connectionProperties**: 设置 JDBC URL 的附加属性。 - **initialSize/maxTotal/minIdle/maxIdle**: 控制连接池大小的相关参数。 - **validationQuery/testOnBorrow**: 定义验证查询语句以及是否每次借用连接前都执行该查询。 --- #### 3. 解决 Unicode 编码引起的中文乱码问题 某些情况下,在编辑或运行程序过程中可能会遇到因字符集设置不当而导致的中文乱码现象。这可能是由 IDE 的编码设置错误引起。为了防止此类问题发生,建议按照以下步骤调整开发环境中的文件编码选项[^4]: - 打开 IntelliJ IDEA/Android Studio 菜单栏中的 `File -> Settings`。 - 在弹出窗口左侧导航树中找到 `Editor -> File Encodings`。 - 将全局编码、项目编码均设为 UTF-8,并勾选透明原生行结束符转换功能。 完成以上操作后保存更改即可消除潜在的乱码隐患。 --- #### 总结 综上所述,无论是桌面端还是移动端应用都可以借助简单的 API 来访问外部化的配置信息;而在处理涉及国际化场景的数据交换时,则务必关注底层字节流的实际表现形式以免造成不必要的麻烦。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值