spring国际化文件的读取,指定路径

有关spring的国际化,我相信很多人还是喜欢把资源文件用单独的目录来进行管理的,但是网络上的大部分资料并没有介绍如何在spring加载资源文件时使用你指定的目录。

看了一下源码的注释,然后自己测试了一下,终于搞明白了spring是如何加载国际化的资源文件的。直接看代码吧。

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
   <property name="basename" value="18n/message" />
 </bean>

 

根据spring的源码注释,加载国际化文件取决于basename属性,如果basename的值的形式为包的形式,如org.springframework之类的,它将进入lib根目录下进行寻找。如果不是这种形式,那么它将进入classpath:根路径下进行寻找,也就是在WEB-INF/classes根目录下寻找,注释里面没有写明,如何指定classes下的子目录。

所以我自己尝试写了一下,在classes下建立子目录18n.将basename的值指定为18n/message,

发现是行得通的,以后可以随意指定自己的国际化文件目录了,不错。

Spring Boot中,你可以使用`Resource`和`InputStream`来读取指定路径文件,并将文件内容返回为文件流。以下是一个示例代码: ```java import org.springframework.core.io.FileSystemResource; import org.springframework.core.io.Resource; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; import java.io.IOException; import java.io.InputStream; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @RestController public class FileController { @GetMapping("/file/{filename}") public ResponseEntity<Resource> getFile(@PathVariable String filename) throws IOException { // 指定文件路径 String filePath = "/path/to/your/file/" + filename; // 创建文件资源对象 Resource resource = new FileSystemResource(filePath); // 检查文件是否存在 if (!resource.exists()) { return ResponseEntity.notFound().build(); } // 获取文件输入流 InputStream inputStream = resource.getInputStream(); // 返回文件流 return ResponseEntity.ok() .contentLength(Files.size(Paths.get(filePath))) .header("Content-Disposition", "attachment; filename=\"" + filename + "\"") .body(new InputStreamResource(inputStream)); } } ``` 在上述代码中,你需要将`/path/to/your/file/`替换为实际存储文件路径。当访问`/file/{filename}`时,该方法会检查文件是否存在,然后将文件内容返回为文件流。 请注意,上述示例假设文件路径是绝对路径。如果你需要处理相对路径或基于类路径文件,请使用适当的方法获取资源。 希望这对你有所帮助!如果你有任何其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值