Springboot项目中,如何配置Bean类读取配置文件中的属性

我们知道在比较大型的项目的开发中,比较经常修改的属性我们一般都是不会在代码里面写死的,而是将其定义在配置文件中,之后如果修改的话,我们可以直接去配置文件中修改,那么在springboot的项目中,我们应该如何实现这个呢?

接下来我会用我这边实际项目中遇到的例子说明下:

(1)使用注解@Value映射

可以使用@Value注解进行映射,这种方法适用于对象的参数比较少的情况,我们可以直接在对象的属性上使用@Value注解,在其中以${}的形式传入配置文件中对应的属性,${}内的输入内容可以使用jsonPath的取值方式表达;

yml配置文件的写法如下:

shopify:
  email: test@qq.com<br> name:test
  address:
    address1: 123Amoebobacterieae St
    city: Ottawa
    country: Canada
    country_code: CA
    first_name: Bob
    last_name: Bobsen
    name: Bob Bobsen
    phone: 555-625-1199
    province: Ontario
    province_code: ON
    zip: K2P0V6

这个时候想要取到上述配置文件中的email的取值,可以通过使用注解@Value映射,如下:

@Getter
@Setter
@Component
public class OrderBean {
    @Value("${shopify.email}")
    private String email;
}

${shopify.email}就是使用的上述jsonPath的写法;这样就可以取到配置文件中的email字段的值。当然要取多少个字段的值,就要写对应数量的@Value,如下:

@Getter
@Setter
@Component
public class OrderBean {
    @Value("${shopify.email}")
    private String email;
    @Value("${shopify.name}")
    private String name;
}

(2)使用@ConfigurationProperties映射

第二种方法相对于第一种方法更简单一些,不需要在每一个字段的上面的使用@Value注解,直接使用一个@ConfigurationProperties注解标注在类上即可,在其中传入的参数为在yml配置文件上参数的前缀,但是效果是和第一种是一样的;

实际例子如下:

yml配置文件:

shopify:
  email: test@qq.com
 name:test
  address:
    address1: 123Amoebobacterieae St
    city: Ottawa
    country: Canada
    country_code: CA
    first_name: Bob
    last_name: Bobsen
    name: Bob Bobsen
    phone: 555-625-1199
    province: Ontario
    province_code: ON
    zip: K2P0V6

这个时候想要获取各个字段对应的配置的值,首先要保证Bean类中的变量名和配置文件中的变量名一模一样(区分大小写)且类需要提供字段的setter方法(这里的实现可以用lombok的注释@Getter和@Setter注解实现)

@Component
@ConfigurationProperties(prefix = "shopify.address")
@Getter
@Setter
public class Shipping_addressBean {
    private String address1;
    private String city;
    private String country;
    private String country_code;
    private String first_name;
    private String last_name;
    private String name;
    private String phone;
    private String province;
    private String province_code;
    private String zip;

}
  • @ConfigurationProperties注解声明当前类为配置读取类

  • prefix="shopify.address"表示读取前缀为shopify.address的属性

  • 会将配置文件中前缀为prefix的属性赋给类中同名的字段

最后在测试类中实例化 Shipping_addressBean,将address对象传入对应的方法中就可以实现addressBean使用配置文件中的值

@Autowired
    Shipping_addressBean address;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值