来自于java尚硅谷教程
简单的说这两个配置文件更改配置都可以更改默认设置的值比如服务器端口号之类的,只需再文件中设置即可, properties可能是出现的比较早了,如果你不调你的默认编码,中文可能乱码,yml则不会,至于在两个文件中写不同配置最终执行那个?我没试不得而知!总之都很好用!
说白了为了提高代码复用性是这样吧意思这个就是为了方便从配置文件中读值
例如你建立了一个bean类 别指望运行
Person.java
package com.automavn.bean; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.util.List; import java.util.Map; /* * 把配置文件映射到组件中 * prefix对配置文件哪一个属性下的文件进行映射@Component必须要加 * */ @Component @ConfigurationProperties(prefix = "person") public class Person { private String name; private int age; private List<Object> list; private Map<Object,Object> map; @Override public String toString() { return "Person{" + "name=‘" + name + ‘\‘‘ + ", age=" + age + ", list=" + list + ", map=" + map + ‘}‘; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public List<Object> getList() { return list; } public void setList(List<Object> list) { this.list = list; } public Map<Object, Object> getMap() { return map; } public void setMap(Map<Object, Object> map) { this.map = map; } }
@Component @ConfigurationProperties(prefix = "person")这两个配置是要加的同时要在maven配置(pom.xml)你的yml将会提示你拥有的类的信息
<!-- 有了这个bean 下yml的配置将会提示 而且dependency 在dependencies标签下--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
application.properties的值的大致写法
# 要设置你的编码否则这个会乱码 设置为UTF-8 在设置里面设置 person.age=20 person.name=爸爸 #list用逗号隔开 person.list=a,b,c,d person.map.key=第一个key值 person.map.key1=第二个key值
application.yml的值的大致写法你写的对不对点击文字底部状态栏会有提示的(IDEA)
person: name: 爸爸 age: 18 list: - 第一个list - 第二个list map: {k1: v1 , k2: v2 }
@Component @ConfigurationProperties(prefix = "person") @Validated 可以添加对格式的判断例如@Email 但是@Value不行 --------------------------------------------------- @Value("${person.name}") 利用@Value获取特定的值 以前没学过Spring建议....语法不大懂走一步说一步吧