SpringBoot之application.properties配置文件

前言

在SpringBoot中,有两种不同方式的配置文件格式。一个是properties,另一种是yaml。
properties文件在之前较为常见,在现在yaml文件较为常见流行。yaml更加简单明了,使用场景也多,很多开源的项目都是使用yaml进行配置。本次文章是关于properties的学习。

正文

在创建一个 SpringBoot 工程时,默认 resources 目录下就有一个 application.properties 文件,可以在 application.properties 文件中进行项目配置。SpringBoot 中,一共有 4 个地方可以存放 application.properties 文件。

  • 当前项目根目录下的config目录下
  • 当前项目的根目录下
  • resources目录下的config目录下
  • resources目录下

优先级依次降低,如下图:


properties.png

在一般情况下我们使用默认resources 目录下的就行,在此不再赘述。

自定义属性
server.port=8080
book.id=1
book.name=平凡的世界
book.author=路遥
book.year=2021

然后直接在要使用的地方通过注解@Value(value="${config.name}")就可以绑定到你想要的属性上面

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class BookController {

    @Value("${book.id}")
    private Long id;
    @Value("${book.name}")
    private String name;
    @Value("${book.author}")
    private String author;
    @Value("${book.year}")
    private String year;

    @RequestMapping("/")
    public String book(){
        return year +"年,我在看"+author+"的《"+name+"》";
    }
}

这是 Spring 中属性注入的一个简单用法,和 Spring Boot 没有任何关系。
当我们启动工程输入http://localhost:8080 就可以看到打印了"2021年,我在看路遥的《平凡的世界》"。

类型安全属性

有时候属性太多,一个个绑定到属性字段上太累,官方提倡绑定一个对象的bean。下面我们来修改下代码:

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "book")
public class Book {

    private Long id;
    private String name;
    private String author;
    private String year;
}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.zys.properties.pojo.Book;

@RestController
public class BookController {

    @Autowired
    Book book;

    @RequestMapping("/")
    public String book() {
        return book.getYear() + "年,我在看" + book.getAuthor() + "的《" + book.getName() + "》";
    }
}

主要是引入 @ConfigurationProperties(prefix = “book”) 注解,并且配置了属性的前缀,此时会自动将 Spring 容器中对应的数据注入到对象对应的属性中,就不用通过 @Value 注解挨个注入了,减少工作量并且避免出错。
再次启动工程输入http://localhost:8080,输出效果跟之前就一样的。

总结

application.properties 是 Spring Boot 中配置的一个重要载体,很多组件的属性都可以在这里定制。 yaml 的用法和properties比较类似,只不过yaml更简洁,用起来也方便好用。好的,到此文章就结束啦。不知道大家学会了么,一起加油吧。我自己整理一遍,也有许多的收获,在网站各种找资料。我此次学习主要是看江南一点雨的文章学习的,感谢他的文章,也帮助了我。

天行健,君子以自强不息!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容