jdk1.8的springboot项目无法读取自定义的yml配置文件

记录个关于springboot项目中,没法读取到自定义的yml配置文件的属性问题

1、产生问题的原因:其实是由于 jdk导致的原因,因为读取的核心注解“@PropertySource”底层调用的是jdk中的【org.springframework.util.DefaultPropertiesPersister#load()   -- >  java.util.Properties#load(java.io.InputStream)】方法来实现配置文件的读取

2、因此针对读取自定义的yml配置文件,可以通过扩展自定义一个“PropertySourceFactory”类,在需要替换执行的地方替换即可

3、替换的示例代码如下【核心是factory的替换】:

@Data
@Configuration
@PropertySource(value = {"classpath:customize.yml"}, factory = YamlSourceFactory.class)
@ConfigurationProperties(prefix = "customize.yml")
public class YmlProperties {

    private Integer type;

    private String name;

    private List<Map<String, String>> ary;
}

A、额外记录个关于springboot项目中多环境的选择与优先级小结

1、SpringBoot是支持多环境的配置,通过配置属性 spring.profiles.active 来指定

2、spring.profiles.active参数指定多个配置文件时,右边的优于左边的

3、应用外的配置文件优先于应用内,config目录下的优先于根目录下的

4、命令行参数传入时,请注意写法形同 --key=value

B、属性读取的优先级

1、根目录下的开发工具全局设置属性(当开发工具激活时为~/.spring-boot-devtools.properties)。

2、测试中的@TestPropertySource注解。

3、测试中的@SpringBootTest#properties注解特性。

4、命令行参数

5、SPRING_APPLICATION_JSON中的属性(环境变量或系统属性中的内联JSON嵌入)。

6、ServletConfig初始化参数。

7、ServletContext初始化参数。

8、java:comp/env里的JNDI属性

9、JVM系统属性

10、操作系统环境变量

11、随机生成的带random.* 前缀的属性(在设置其他属性时,可以应用他们,比如${random.long})

12、应用程序以外的application.properties或者appliaction.yml文件

13、打包在应用程序内的application.properties或者appliaction.yml文件

14、通过@PropertySource标注的属性源

15、默认属性(通过SpringApplication.setDefaultProperties指定).

以下是使用JDK 1.8创建Spring Boot项目的步骤: 1. 首先,确保你已经安装了JDK 1.8,并将其配置为系统环境变量。 2. 打开终端或命令提示符,并使用以下命令创建一个新的Spring Boot项目: ```shell spring init --name=myproject --groupId=com.example --artifactId=myproject --dependencies=web myproject ``` 这将创建一个名为myproject的新项目,groupId为com.example,artifactId为myproject,并且添加了web依赖。 3. 进入项目目录: ```shell cd myproject ``` 4. 使用任何文本编辑器打开pom.xml文件,并在<dependencies>标签中添加以下内容,以引入Spring Boot的父引用: ```xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.3.RELEASE</version> </parent> ``` 5. 打开src/main/java/com/example/myproject目录,并创建一个名为StartSpringbootApplication.java的Java类。 6. 将以下代码复制到StartSpringbootApplication.java文件中: ```java package com.example.myproject; import org.mybatis.spring.annotation.MapperScan;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @MapperScan(basePackages = "com.example.myproject.mapper") public class StartSpringbootApplication { public static void main(String[] args) { SpringApplication.run(StartSpringbootApplication.class, args); } } ``` 7. 保存并关闭StartSpringbootApplication.java文件。 8. 在终端或命令提示符中,使用以下命令启动Spring Boot应用程序: ```shell mvn spring-boot:run ``` 现在,你已经成功创建了一个使用JDK 1.8的Spring Boot项目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值