0
点赞
收藏
分享

微信扫一扫

每天花三分钟看Springboot文档-第二天

Xin_So 2022-02-18 阅读 11

给实体类赋值的三种方法,多用于yaml给配置文件赋值

第一种直接注入

@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
public class Dog {
    @Value("旺财")
    private String name;
    @Value("3")
    private Integer age;
}

然后在springboot提供的测试类中去测试

@SpringBootTest
class SpringBootTestApplicationTests {

    @Autowired
    //@Qualifier 可以指定某一条狗
    private Dog dog;

    @Test
    void contextLoads() {
        System.out.println(dog);
    }

}

结果输出正确

 

第二种利用yaml配置文件

在springboot中,我们常用的是yaml配置文件,接下来看看如何去用yaml配置文件去实现实体类

yaml文件的格式是键值对 key: value,冒号后面需要有一个空格,同一级数据结构在同一列,比如

person:
  name:
    surname:zhang

上述代码相当于 person.name.surname=zhang;

person:
  name: ${random.uuid}
  age: ${random.int}
  happy: false
  birth: 2019/11/02
  maps: {k1: v1,k2: v2}
  lists:
    - code
    - music
    - girl
#如果person.hello的值存在,则结果为person.hello的值+_旺财
#如果person。hello的值不存在,则结果为hello_旺财
#hello为默认值
  dog:   
    name: ${person.hello:hello}_旺财
    age: 3

实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
//如果不配置这个注解,就会提示爆红,可以通过这个注解产生提示
//引入spring-boot-configuration-processor依赖后爆红消失
//prefix = "person"这个person值就是yaml中配置的key
@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;
}

测试类测试

@SpringBootTest
class SpringBootTestApplicationTests {

    @Autowired
    private Person person;

    @Test
    void contextLoads() {
        System.out.println(person);
    }

}

结果输出正确

第三种自定义配置文件

 

 zxc.properties中的的内容

name=zhangsan
age=15

实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
//javaConfig绑定配置文件,可以采取这些方式!
//加载指定的配置文件
@PropertySource(value = "classpath:zxc.properties")
public class Person {
    //SPEL表达式取出配置文件的值
    @Value("${name}")
    private String name;
    @Value("${age}")
    private Integer age;
    private Boolean happy;
    private Date birth;
    private Map<String,Object> maps;
    private List<Object> lists;
    private Dog dog;
}

测试类测试

@SpringBootTest
class SpringBootTestApplicationTests {

    @Autowired
    private Person person;

    @Test
    void contextLoads() {
        System.out.println(person);
    }

}

结果输出正确

举报

相关推荐

0 条评论