首先有两个可以来配置的文件
-
一个是
.properties
文件 -
一个是
.yml
文件
关于. properties
如果用的是.properties
文件时,在实体类_(或者说是 javaBean)_上加上注解@Configuration
& @PropertySource("classpath:xxxxxx.properties")
& @ConfigurationProperties(prefix = "xxx.yyy")
@propertySource
: classpath 来加载配置文件的位置。
@ConfigurationProperties(prefix="xxx.yyy")
:就是在 xxx.yyy 的后面是要配置的属性
关于. yml
如果用的是.yml
文件时,如果是在appliction.yml
上,如果要读取属性值,只需要加@Value("${属性名}")
如果要将属性赋值给JavaBean
时, 先将 JavaBean 中的属性对应然后再加上注解@ConfigurationProperties(prefix="xxyy")
最好再添加上@Component
组件
@ConfigurationProperties(prefix="xxyy")
: xxyy 就是. yml 文件中要对这个 javabean 中的配置
应用类或者 Application 类
加上@EnableConfigurationProperties({xxxxxx.class})
注意:jar 包
用 maven 中的 pom 文件来加入 jar 包
<dependency>
<groupId> org.springframework.boot </groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
否则, 会一直出问题
实例
.yml
新建一个 SpringBoot 项目并引进上述 jar 包
在 application.yml 中添加配置
my:
name: forezp
age: 12
number: ${random.int}
uuid : ${random.uuid}
max: ${random.int(10)}
value: ${random.value}
greeting: hi,i'm ${my.name}
在应用类中直接读取
@RestController
@EnableConfigurationProperties({Test1.class, User.class}) //这里的Test1 和 User 在后面用
public class Test {
@Value("${my.name}")
private String name;
@Value("${my.age}")
private int age;
@RequestMapping(value = "/miya")
public String miya1() {
return name+":"+age;
}
启动工程,访问路径,会返回
forezp12
创建一个实体类当作 javaBean Test1
@ConfigurationProperties(prefix = "my")
@Component
public class Test1 {
private String name;
private int age;
private int number;
private String uuid;
private int max;
private String value;
private String greeting;
......toString......Get...Set......
......直接构造就是了..........
在应用类上加上调用其它的属性并且@EnableConfigurationProperties({Test1.class})
@RequestMapping(value = "/lucy")
public String miya() {
System.out.println(test1.toString());
return test1.getGreeting() + " >>>>" + test1.getName() +
" >>>>" + test1.getUuid() + " >>>>" + test1.getMax();
}
启动工程,访问路径,会返回
hi,i'm forezp >>>>forezp >>>>9928740d-7588-4042-9624-5b75a743531b >>>>2
.properties
新建一个 SpringBoot 项目并引进上述 jar 包
在根目录下创建一个新的 .properties 文件
com.slide.name=forezp
com.slide.age=12
com.slide.slideInfos[0].Id=123456
com.slide.slideInfos[0].Name=lihua
com.slide.slideInfos[1].Id=123456
com.slide.slideInfos[1].Name=lihua
创建一个实体类当作 javaBean User
@Configuration
@PropertySource(value = "classpath:list.properties")
@ConfigurationProperties(prefix = "com.slide")
public class User {
private String name;
private int age;
private List<SlideInfo> slideInfos;
//在SlideInfo 类里面有属性 name id
public List<SlideInfo> getSlideInfos() {
return slideInfos;
}
public void setSlideInfos(List<SlideInfo> slideInfos) {
this.slideInfos = slideInfos;
}
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;
}
}
在实体类里面加入 User user 以及方法
@Autowired
User user;
@RequestMapping("/user")
public String user() {
return user.getName()+user.getAge()+user.getSlideInfos().toString();
}
启动工程,访问路径,会返回
forezp12
[SlideInfo(docId=123456, docName=lihua),
SlideInfo(docId=123456, docName=lihua)]