[Java]-spring读取配置文件以及忽略部分文件处理

本文介绍了Spring Boot中如何处理资源文件的读取,非过滤文件扩展的配置,以及配置文件的优先级和中文编码问题。重点讲解了配置文件的读取方式和如何确保跨语言环境下的正确性。

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


spring中很多配置文件与静态文件都放在resources目录下。

资源文件

资源文件是Java代码中要使用的文件。代码在执行的时候会到指定位置去查找这些文件。若希望把其他目录中的资源也复制到classes目录中,这时就需要在Pom.xml文件中做修改了。

  • 把resources目录下的xml文件配置在外(不打包进jar包);
  • 把java目录下properties和xml打包进jar包;
<build>
    .......
      <resources>
        <resource>
            <directory>src/main/resources</directory>
            <excludes>
                <exclude>**/*.xml</exclude>
             </excludes>
            <filtering>false</filtering>
        </resource>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>false</filtering>
        </resource>
    </resources>
    ......
</build>

读取资源文件

resources目录下的文件可通过ClassPathResource来方便地读取:

// File file = ResourceUtils.getFile("classpath:test/example.txt");

ClassPathResource resPath = new ClassPathResource("test/example.txt");
InputStream input = resPath.getInputStream();
// ...
input.close();

nonFilteredFileExtension

maven打包项目的时候,可在pom.xml配置文件里可以配置对项目进行统一编码,但是部分文件可能不需要进行重新编码,例如: 证书文件;重新编码后可能导致证书不可用。

对于不能重新编码的文件,可通过nonFilteredFileExtension在pom文件中排除。

<build>
    .......
	<plugin>
		<groupId>org.apache.maven.plugins</groupId>
		<artifactId>maven-resources-plugin</artifactId>
		<configuration>
			<nonFilteredFileExtensions>
				<nonFilteredFileExtension>pem</nonFilteredFileExtension>
			</nonFilteredFileExtensions>
		</configuration>
	</plugin>
    ......
</build>

配置文件

application配置文件中配置,可方便地通过配置类进行读取(通过@Value设定映射项):

@Component
@Data
public class AppConfig {

    @Value("${main.server.address}")
    private String serverAddr;

    @Value("${main.appkey}")
    private String appKey;
}

配置文件读取顺序

SpringBoot配置文件可以放置在多种路径下,不同路径下的配置优先级有所不同。可放置目录(优先级从高到低,高优先级会覆盖低优先级):

  • file:./config/ (jar包当前项目路径config目录下);
  • file:./ (jar包当前项目路径下);
  • classpath:/config/ (类路径config目录下);
  • classpath:/ (类路径config下).

中文处理

直接从application.properites(@Value)中加载时,编码默认是ISO-8859-1;要能正确识别中文,需要:

  • 自定义.properties文件(非application.properites),读取时可设定编码格式(@PropertySource(encoding = “UTF-8”));
  • 使用.yml文件(默认使用UTF-8加载);

以resources下test…properites为例:

test.url=https://test.com/api
test.appId=abcd1234
text.name=中文乱码测试

映射类:

@Component
@PropertySource(value = "classpath:/test.properties", encoding = "UTF-8")
@ConfigurationProperties(prefix = "test")
@Data
public class TestConfig {
    private String url;
    private String appId;
	private String name;
}	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值