SpringBoot中属性注入

我们正常写一个对象类,会有对象的属性和方法,我们想通过注入的方式给对象的属性添加数据。

首先创建一个对象,给予他get、set和tostring方法,生成方法的快捷键是alt+insert

public class stuBean {
    private String string;
    private Date date;
    private List<String> list;
    private Map<Integer,String> map;
    private bean bean;

    @Override
    public String toString() {
        return "stuBean{" +
                "string='" + string + '\'' +
                ", date=" + date +
                ", list=" + list +
                ", map=" + map +
                ", bean=" + bean +
                '}';
    }

    public String getString() {
        return string;
    }

    public void setString(String string) {
        this.string = string;
    }

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }

    public List<String> getList() {
        return list;
    }

    public void setList(List<String> list) {
        this.list = list;
    }

    public Map<Integer, String> getMap() {
        return map;
    }

    public void setMap(Map<Integer, String> map) {
        this.map = map;
    }

    public com.tx.springboot_test.bean.bean getBean() {
        return bean;
    }

    public void setBean(com.tx.springboot_test.bean.bean bean) {
        this.bean = bean;
    }

我们此时打印这个对象是显示所有值都为null。

1、配置文件写属性的值

如果需要给这个对象的属性赋值,需要先在application.yml中写属性对应的值

对象的属性需要和application.yml配置文件中的相同,比如:user这个对象中的string属性

user:
  String: 张三

然后在user类的String属性上加上注解@Value("${user.String}"),就是@Value注解中加上el表达式来获取application.yml文件中的值,这样我们就能让user类的String属性附上“张三”的值,

不同类型的参数在application.yml中的写法格式也不相同,但是获取值的方式都是相同的。

如:list集合

        可以是单行格式

list: [伊朗,二郎]

        也可以是多行格式

 list:
    - 张三
    - 李四

map

        可以是多行格式

  map:
    18 : 三郎
    29 : 思量

        也可以是单行格式

map: {18 : "${random.value}",12 : liulang}
#${random.value}是生成随机值

        对象类型

 bean:
    id: ${random.int[5,10]}
    username: ${user.String}${random.uuid}
#${random.int[5,10]}是生成5到10中的随机数
#${user.String}引用属性的值
#${random.uuid}通过uuid生成随机数

2、@ConfigurationProperties()

我们在获取值的时候需要给每个需要复制的属性上都添加一个@Value()注解,会很麻烦。

为了让简化操作,可以使用@ConfigurationProperties(prefix="user")注解

如此,我们就不需要去在每个属性上都写@Value(),@ConfigurationProperties()这个注解可以自动地去找user下与之对应的属性来赋值。

3、获取自定义文件的属性值

如果配置文件里面有很多配置,我们可能还在里面继续写属性的话,会影响阅读,所以我们自定义一个文件

注:使用自定义文件,文件名必须以.properties格式

在.properties文件格式里写属性赋值,只能使用单行格式

user.String= 张三
user.date= 2001-11-11
user.list= 伊朗,二郎
user.map.18 = ${random.value}
user.map.12 = liulang
user.bean.id=${random.int[5,10]}
user.bean.username= ${user.String}${random.uuid}

对象获取属性并赋值需要通过@PropertySource("classpath:文件路径")注解。

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值