美文网首页个人学习spring
SpringBoot-配置文件解析

SpringBoot-配置文件解析

作者: Tian_Peng | 来源:发表于2020-05-09 14:18 被阅读0次

    由于 Spring Boot 源自 Spring ,所以 Spring 中存在的属性注入,在 Spring Boot 中一样也存在。
    由于 Spring Boot 中,默认会自动加载 application.properties 文件,所以简单的属性注入可以直接在这个配置文件中写。
    例如我们定义一个Book类如下:

    @Data
    @Component
    public class Book extends BaseEntity{
        
        private String name;
        
        private String author;
    }
    

    然后在application.yml文件中定义属性:

    book:
      name: Spring-Boot
      author: TP
    

    按照传统的方式(Spring中的方式),可以直接通过 @Value 注解将这些属性注入到 Book 对象中:

    @Data
    @Component
    public class Book extends BaseEntity{
    
        @Value("${book.name}")
        private String name;
    
        @Value("${book.author}")
        private String author;
    }
    

    配置完成后,在 Controller 或者单元测试中注入 Book 对象,启动项目,就可以看到属性已经注入到对象中了。


    一般来说,我们在 application.properties/application.yml 文件中主要存放系统配置,这种自定义配置不建议放在该文 件中,可以自定义 properties 文件来存在自定义配置。
    例如我们定义一个Cat类并编写一个cat.properties文件如下:

    我们可以通过 @PropertySource 来引入配置
    这样,当项目启动时,就会自动加载 book.properties 文件。
    编写测试类测试效果如下:


    这只是 Spring 中属性注入的一个简单用法,和 Spring Boot 没有任何关系,如果采用 Spring 中的配置方式,当配置的属性非常多的时 候,工作量就很大了,而且容易出错,Spring Boot 引入了类型安全的属性注入,使用类型安全的属性注入,可以有效的解决这个问题。
    我们新建一个Cat2类:

    @Data
    @Component
    @PropertySource(value = "classpath:properties/cat.properties", encoding = "utf-8")
    @ConfigurationProperties(prefix = "cat")
    public class Cat2 {
        private String name;
        private int age;
    }
    

    我们通过@ConfigurationProperties(prefix = "cat")注解,并且配置了属性的前缀,此时会自动将 Spring 容器中对应的数据注入到对象对应的属性中,就不用通过 @Value 注解挨个注入了,减少工作量并且避免出错。

    相关文章

      网友评论

        本文标题:SpringBoot-配置文件解析

        本文链接:https://www.haomeiwen.com/subject/gipcnhtx.html