SpringBoot学习之day02
springboot配置
- springboot的全局配置文件:
application.yml
以及application.properties
- 语法如下:
application.yml
server:
port: 8888 # 修改端口号
person:
name: kobe
age: 41
sex: ♂
- k:(空格)v:表示一对键值对(空格必须有);
以空格的缩进来控制层级关系;
只要是左对齐的一列数据,都是同一个层级的
属性和值也是大小写敏感 application.properties
server.port=8888
person.name=kobe
person.age=41
person.sex=♂
spring boot项目中应用yml
- 将JavaBean注入到配置文件中
- 定义实体类
Person
// 将当前类创建等工作交给spring容器管理
@Component
// 表示该类需要读取的配置信息,prefix用于指示读取哪一个配置信息 与application.yml文件对应
@ConfigurationProperties(prefix = "person")
public class Person {
private String name;
private Integer age;
private String sex;
private Occupation occupation;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Occupation getOccupation() {
return occupation;
}
public void setOccupation(Occupation occupation) {
this.occupation = occupation;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
", occupation=" + occupation +
'}';
}
}
- 编写
Person
类遇到警告处理
pom.xml
修改
<!--解决Person.java文件注解@ConfigurationProperties(prefix = "person")警告问题-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
- 定义实体类
Occupation
(Person
类中存在成员Occupation
)
public class Occupation {
private String occ;
private String team;
public String getOcc() {
return occ;
}
public void setOcc(String occ) {
this.occ = occ;
}
public String getTeam() {
return team;
}
public void setTeam(String team) {
this.team = team;
}
@Override
public String toString() {
return "Occupation{" +
"occ='" + occ + '\'' +
", team='" + team + '\'' +
'}';
}
}
- 全局配置文件
application.yml
server:
port: 8888 # 修改端口号
person:
name: kobe
age: 41
sex: ♂
occupation:
occ: basketball player
team: Los Angeles Lakers
controller
文件编写
@RestController
@RequestMapping("hello")
public class HelloController {
@Autowired
private Person person;
@RequestMapping("person")
public Person personInfo(){
return person;
}
}
- 启动项目
Application.java
文件为启动类文件(右键 run启动)
- 网页直接访问数据展示不清晰,解决:
使用postman
工具访问更直观:postman
官网:https://www.getpostman.com/
小结:
1.此次项目用到的注解@Component
和@ConfigurationProperties
@Component
:将当前类创建等工作交给spring容器管理(使用次注解后才可使用@ConfigurationProperties
注解)@ConfigurationProperties
:将当前类的所有属性和配置文件中的相关信息进行绑定@Autowired
:根据类型自动注入(使用后即可访问注入的对象)
2.spring boot中全局配置文件的文件名称必须为 application
,可使用application.properties
或application.yml
,但推荐使用application.yml
- 优点(个人观点):
直观的树状结构
相较于application.properties
书写方便 - 缺点:
无法使用@PropertySource
注释加载yaml
文件
需要以这种方式加载值的情况下,需要使用***.properties
文件 - 在项目中的不同位置的优先级:(由上往下依次递减)
项目根目录中的config
文件夹中的application.yml
项目根目录中的application.yml
项目中的resources
文件夹中的config
文件夹中的application.yml
项目中的resources
文件夹中的application.yml
推荐使用: 项目中的resources
文件夹中的application.yml
- 延申:也可使用
***.yml
为配置类注入属性
3.关于@ConfiturationProperties(prefix = "xxxx")
中prefix属性