一、 Properties配置
person.last-name=海峰
person.age=21
person.birth=2000/05/03
person.boss=false
person.maps.k1=v1
person.maps.k2=14
person.lists=a,b,c
person.dog.name=${person.hello:hello}_dog
person.dog.age=15
此处会出现一个bug,原因是文件乱码,IDEA使用UTF-8,propertie是使用ASCII码,可以在File Encoding中修改。
二、Person文件中另一种获取值的方式——@Vaule
使用三个相关注解演示,在名字,年龄,boss上:
@Value("${person.last-name}")
@Value("#{11*2}")
@Value("{ture}")
pis:${},#{}符号的区别:
#{},变量自动加上单引号,可以防止SQL注入,默认值arg0,arg1,arg2.
${},变量不会加上单引号,不可以防止SQL注入,默认值param0,param1,param2.
@ConfigurationProperties、@Value两种方式比较:
解析:
①松散绑定:
last-name:小写用-
last_name:大写用-
lastName:标准
②SpEl:
@ConfigurationProperties不能在Properties中写入类似#{2*11}的格式。
③JSR303数据校验:
在主函数类上加入@Email注解,如果配置文件中相关对象不是Email格式,就会报错
三、两个注解
1.@PropertySource:加载指定配件文件。
@ConfigurationProperties是默认配置全局的文件。
用法:@PropertySource(value={“classpath:person.properties”})
使用路径为person.properties的配置文件。
2.ImportResources:导入Spring配置文件,让里面内容升效。
用法:@ImportResource(locations={“classpath:***.xml”})
原因是SpringBoot中没有Spring配置文件,自己所编写的也不能生效,不能识别,所以使用@ImportResource注解。
使用@Bean给容器添加组件
@Configuration
public class MyAppConfig {
//将方法的返回值添加到容器中;容器中这个组件默认的id就是方法名
@Bean
public HelloService helloService(){
System.out.println("配置类@Bean给容器中添加组件了...");
return new HelloService();
}
}
@Bean:将方法返回值添加至容器中,容器中这个组件默认id就是方法名。
四、配置的占位符
随机数:
${random.value}、${random.int}、${random.long}
${random.int(10)}、${random.int[1024,65536]}