前言
在SpringBoot中,有两种不同方式的配置文件格式。一个是properties,另一种是yaml。
properties文件在之前较为常见,在现在yaml文件较为常见流行。yaml更加简单明了,使用场景也多,很多开源的项目都是使用yaml进行配置。本次文章是关于properties的学习。
正文
在创建一个 SpringBoot 工程时,默认 resources 目录下就有一个 application.properties 文件,可以在 application.properties 文件中进行项目配置。SpringBoot 中,一共有 4 个地方可以存放 application.properties 文件。
- 当前项目根目录下的config目录下
- 当前项目的根目录下
- resources目录下的config目录下
- resources目录下
优先级依次降低,如下图:
在一般情况下我们使用默认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更简洁,用起来也方便好用。好的,到此文章就结束啦。不知道大家学会了么,一起加油吧。我自己整理一遍,也有许多的收获,在网站各种找资料。我此次学习主要是看江南一点雨的文章学习的,感谢他的文章,也帮助了我。
天行健,君子以自强不息!