随便在配置文件中敲两个字母,都会弹出一个提示框如下,其实这个是系统提供的类中提供的,我们也可以实现自己的属性在这里有提示。
而且我希望是这样配置:意思就是所有关于这个类的配置都是通过一个相同的前缀(prefix)叫user,方便后续管理。
user.id=10 user.name=张三 ... 编写一个普通类,提供get、set、toString方法 在此类上添加注解@ConfigurationProperties(prefix = “myprefix”)@ConfigurationProperties注解表示从配置文件(properties或yml)中读取值,并把读到的值给我们的user对象对应的属性。 prefix属性:表示从配置文件中找哪个前缀
# 根据下面的3句话我们可以说name\pwd\sex他们有一个相同的开头user,这个user我们就认为是name\pwd\sex的前缀 user.name user.pwd user.sex // 这两个注解一般一起使用,只有让spring容器管理的类才能使用自定义配置 @Component @ConfigurationProperties(prefix = "myprefix") public class User { private Integer id; private String name; private User parent; private Date birth; private Map<String,String> map; private List<String> fav; private String[] friends; 在pom.xml文件中加上如下的依赖 <!-- 用来解析带@ConfigurationProperties的类,将来给类的属性在配置文件赋值时,可以有提示--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>4. 此时在配置文件中输入类上配置的prefix的值,发现就有提示了;如果没有提示先运行一下程序再试 5. 配置,两个文件最好是单独测试,不要共存
yml配置文件: myprefix: # Date类型 birth: 2020/07/04 #Integer类型 id: 10 #String类型 name: 张三 #数组类型 friends: - 李白 - 杜甫 - 王安石 #map类型 map: {"key1":"v1","key2":"v2"} #list类型 fav: [1,2,3,4] #对象类型,这个类型在文章最后提供代码 book: bookName: 三国演义 desc: 100.00 properties配置文件: #日期类型 myprefix.birth=2020/07/04 #对象类型 myprefix.book.bookName=xiyouji myprefix.book.desc=100.00 #list集合类型 myprefix.fav=eating,drinking,gambling #数组类型 myprefix.friends=xiaohei,xiaohuang,xiaohei #Integer类型 myprefix.id=1 #map类型 myprefix.map.k1=v1 myprefix.map.k2=v2 myprefix.map.k3=v3 #字符串类型 myprefix.name=zhangsan 单元测试代码 package com.qs; import com.qs.bean.User; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) @SpringBootTest public class SpringBootHelloworldApplicationTests { //因为User类上有Component注解,所以可以直接注入 @Autowired User user; @Test public void contextLoads() { System.out.println(user); } } 单元测试结果 User{id=10, name='张三', book=Book{bookName='三国演义', desc=100.0}, birth=Sat Jul 04 00:00:00 CST 2020, map={key1=v1, key2=v2}, fav=[1, 2, 3, 4], friends=[李白, 杜甫, 王安石]} 2020-07-04 22:11:21.585 INFO 14891 --- [extShutdownHook] book类代码 package com.qs.bean; public class Book { private String bookName; private float desc; public String getBookName() { return bookName; } public void setBookName(String bookName) { this.bookName = bookName; } public float getDesc() { return desc; } public void setDesc(float desc) { this.desc = desc; } @Override public String toString() { return "Book{" + "bookName='" + bookName + '\'' + ", desc=" + desc + '}'; } }这里主要说明了配置文件的两种格式,两种配置文件都可以为对象的简单属性、复杂属性赋值。
