目录
  • SpringBoot application.properties无法加载
    • 项目场景
    • 问题描述
    • 原因分析
    • 解决方案
  • springBoot自定义application.properties配置文件名称
    • 将springboot项目的properties文件改为自定义名称
  • 总结

    SpringBoot application.properties无法加载

    项目场景

    SpringBoot 早上启动发现配置无法加载

    问题描述

    在使用SpringBoot的时候,发现配置总是无法加载,启动又不报错

    原因分析

    其实可以通过一个一些技巧来定位问题

    在使用@ConfigurationProperties的时候,其实里面是有些附加属性可以设置,其中一个就是ignoreUnknownFields 这个属性设置为false,当配置了非法属性的时候,Spring boot就会启动失败

    //只有这个组件是容器中的组件,才能使用容器提供的@ConfigurationProperties功能
    //@ConfigurationProperties告诉springboot将本类中的所有属性和配置文件中相关的配置进行绑定
    //prefix表示与配置文件中哪个下面的所有属性进行映射
    @Component
    //prefix里面的配置只能小写
    @ConfigurationProperties(prefix ="userpo", ignoreUnknownFields = false)
    public class UserPo {
    }

    显示报错如下,例如我的例子,我配置的时候删除了字段的get和set方法,导致无法注入,可以通过恢复get和set方法的方式来解决问题

    Description:
     
    Binding to target [Bindable@6815c5f2 type = com.lpx.study.testmaven.config.UserPo, value = 'provided', annotations = array<Annotation>[@org.springframework.boot.context.properties.ConfigurationProperties(ignoreInvalidFields=false, ignoreUnknownFields=false, prefix=userpo, value=userpo)]] failed:
     
        Property: userpo.son.name1
        Value: wangwu
        Origin: class path resource [application.properties]:4:18
        Reason: The elements [userpo.son.name1] were left unbound.
     
    Action:
     
    Update your application's configuration

    解决方案

    通过增加get 和set 方法接解决此问题

    springBoot自定义application.properties配置文件名称

    将springboot项目的properties文件改为自定义名称

    更改名称后的properties文件仍然放置在resource下

    SpringBoot中的application.properties无法加载问题定位技巧

    @SpringBootApplication
    public class DemoSpringbootApplication {
       public static void main(String[] args) {
           new SpringApplicationBuilder(DemoApplication.class)
                   .properties("spring.config.name:a_demo")
                   .build()
                   .run(args);
       }
    }

    这里是参考资料

    后来我又学了个新的方法,不用启动类,可以写个配置类,这个方法更好

    @Configuration
    @PropertySource("classpath:a_demo.properties")
    @MapperScan(basePackages = "xxx.mapper")
    public class CoreConfig {
    }
    

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

    声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。