1、配置文件
SpringBoot使用一个全局的配置文件,配置文件名是固定的;
-
application.properties
-
application.yml
配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;
配置文件一般放在resources目录下
2、YML语法
1、基本语法
k:(空格)v:表示一对键值对(空格必须有);
以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的
server:
port: 8081
path: /hello
属性和值也是大小写敏感;
2、值的写法
字面量:普通的值(数字,字符串,布尔)
k: v:字面直接来写;
字符串默认不用加上单引号或者双引号;
- "":双引号;会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思
name: “zhangsan \n lisi”:输出;zhangsan 换行 lisi - '’:单引号; 不会转义特殊字符,特殊字符最终只是一个普通的字符串数据
name: ‘zhangsan \n lisi’:输出;zhangsan \n lisi
对象、Map(属性和值)(键值对):
k: v:在下一行来写对象的属性和值的关系;注意缩进
对象还是k: v的方式
friends:
lastName: zhangsan
age: 20
行内写法:
friends: {lastName: zhangsan,age: 18}
数组(List、Set):
用- 值表示数组中的一个元素
pets:
- cat
- dog
- pig
行内写法
pets: [cat,dog,pig]
3、配置文件值注入
1.在pom.xml添加一下依赖
<!--导入配置文件处理器,配置文件进行绑定就会有提示-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
2.在src/test/com.example.springboot下建立SpringbootApplicationTests单元测试类
-
当一个类用@RunWith注释或继承一个用@RunWith注释的类时,
JUnit将调用它所引用的类来运行该类中的测试
而不是开发者去在junit内部去构建它。 -
SpringRunner是SpringJUnit4ClassRunner的一个别名
-
使用这个类,简单注解一个JUnit 4 依赖的测试@RunWith(SpringRunner.class).
springboot测试步骤
- 直接在测试类上面加上如下2个注解
@RunWith(SpringRunner.class)
@SpringBootTest
就能取到spring中的容器的实例,如果配置了@Autowired那么就自动将对象注入。
/*
SpringBoot单元测试;
可以在测试期间很方便的类似编码一样进行自动注入等容器的功能
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootApplicationTests {
@Autowired
Person person;
@Test
public void test() {
System.out.println(person);
}
}
3.编写实体类并加上注解以及配置application文件
@ConfigurationProperties的作用是从配置文件中读取数据,通过配置获取单个属性、集合
@ConfigurationProperties有两个属性
- prefix:指定properties的配置的前缀
- locations:指定properties文件的位置
注意:
- 通过prefix 定位到以 person 开头
- 保证 属性名字 和 application.yml或者properties中一样,这样就能自动匹配
- 添加 get set 方法,一个都不能少,不然就启动不成功
细节:
- 只有当前组件是容器中的组件,才能使用容器提供的@ConfigurationPropeities功能
- 使用@ConfigurationProperties,被注入字段必须要有set 、get 方法
- prefix表达式中可以使用 点来表示yml中的层级
- 通常需要通过配置文件注入复杂类型,如对象、List 、Map是优先考虑使用@ConfigurationProperties ,只是在某个业务逻辑找那个获取一下配置文件中的某项值就直接用@Value就可以了
spring注解
1、@controller 控制器(注入服务)
用于标注控制层,相当于struts中的action层
2、@service 服务(注入dao)
用于标注服务层,主要用来进行业务的逻辑处理
3、@repository(实现dao访问)
用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件.
4、@component (把普通pojo实例化到spring容器中,相当于配置文件中的
<bean id="" class=/)
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String lastName;
private Integer age;
private Boolean boss;
private Date birth;
private Map<String, Object> maps;
private List<Object> lists;
private Dog dog;
···
//后面省略person的toString()方法以及getter setter方法
在application.yml配置文件
person:
lastName: 张三
age: 18
boss: false
birth: 2019/1/1
maps: {k1: v1,k2: v2}
lists:
- lisi
- zhaoliu
dog:
name: lala
age: 12
在application.properties配置文件
另外一个application.properties 需要对idea进行配置才能进行中文数据录入
person.last-name=张三
person.age=18
person.boss=false
person.birth=2019/1/1
person.lists=list,zhouliu
person.maps.k1=v1
person.maps.k2=v2
person.dog.name=lala
person.dog.age=12
红色箭头代表要变的地方
此时运行单元测试类就可以获取到配置的数据