SpringBoot
1.什么是SpringBoot
Spring 是新一代JavaEE开发标准,为我们提供了便捷的开发方式
SpringBoot就是Spring开源框架下的子项目,是Spring一站式解决方案,主要简化了Spring的使用难度,降低了对配置文件的要求,
2.SpringBoot的优点
- 简化了Spring配置文件
- 没有代码和XML文件生成
- 内置Tomcat
- 能够独立运行
- 简化监控
3.使用yaml配置文件
yaml不是一种标记语言,
以前的配置文件大都是xml配置
基本语法:
#对空格的要求十分高
#可以注入到配置类中
#普通的key: value
name: lhy
# 对象
student:
name: sindy
age: 7
# 行内写法
student: {name: sindy,age: 8}
#数组
pets:
- cat
- dog
- pig
pets: [cat,dog,pig]
之前给实体类赋值
package com.example.demo.pojo;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class Dog {
// 赋值
@Value("旺财")
private String name;
@Value("3")
private Integer age;
public Dog() {
}
public Dog(String name, Integer age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public Integer getAge() {
return age;
}
public void setName(String name) {
this.name = name;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Dog{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
package com.example.demo;
import com.example.demo.pojo.Dog;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
//官方测试类 别瞎改
@SpringBootTest
class DemoApplicationTests {
@Autowired
private Dog dog;
@Test
void contextLoads() {
System.out.println(dog);
}
}
yaml给实体类赋值
- a. @ConfigurationProperties的作用:
将配置文件中配置的每一个属性的值,映射到这个组件中:
告诉Springboot将本类中的所有属性和配置文件中相关的配置进行绑定
参数prefix= “person” 将配置文件中的person与下面的所有属性一一对应
只有这个组件是容器中的组件,才能使用容器提供的@ConfigurationProperties功能 - b. 在pom.xml添加配置信息
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
c.
/*组件*/
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String name;
private Integer age;
private Boolean happy;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
public Person() {
}
d.
yaml
person:
name: yama
age: 23
happy: false
birth: 1999/10/17
maps: {key:val1,key2:val2}
lists: [num1,num2]
dog:
name: samo
age: 3
yaml中的EL表达式
person:
name: yama${random.uuid}
age: 23
happy: false
birth: 1999/10/17
maps: {key:val1,key2:val2}
lists: [num1,num2]
dog:
name: ${person.hello:hello}旺财
age: 3
5. yaml与@Value的对比
- 配置yml和配置properties都可以获取到值,强烈推荐yml
- 如果在某个业务中,只需要获取配置文件中的某个值,可以使用一下@Value
- 如果说,我们专门编写了一个JavaBean来和配置文件进行映射,就直接使用
@configurationProperties,不要犹豫!!!
6.松散绑定
在yml中的last-name,和lastName是一样的。-后面跟着的字母默认是大写的,这就是松散绑定
7.JSR303
在字段增加一层过滤器验证,可以保证数据的合法性。