@Value使用详解快速入门

一. 概述

在日常开发过程中,经常会使用到@Value()从yml配置中或从Nacos中读取配置,但是小伙伴们可能在也会遇到像我这样的问题吧,@value具体应该怎么使用呢?好的跟着鸣人同学来具体学习一下@value的使用详解吧

二. 使用详解

属性注入是我们经常会使用的一种方式,我们通常会将一些全局通用的配置信息写在YML或nacos配置中,所以学习@value的使用方式非常重要!

下述使用方式之前,在Java中必须注入在Spring容器管理的Bean对象,如@Component,@Service等

1.注入String 类型

tips: yml中的配置冒号后要加空格

properties 复制代码
test: 
  name: 'skywalker'
  pwd: '123456'
java 复制代码
@Component
public class User {

    //defaultName为可以设置的默认值
    @Value("{test.name:defaultName}")
    private String name;

    @Value("{test.pwd:defaultPwd}")
    private String pwd;
}

2.注入List类型

注入List类型有3种方式

properties 复制代码
test: 
  # 第1种方式
  userList: "skywalker,naruto"
  # 第2种方式
  userList2: "{'skywalker','naruto'}"
  # 第三种方式
  userList3: 
    - 'skywalker'
    - 'naruto'

java代码中的注入方式

java 复制代码
@Component
public class Test {

    //以下三种方式和上述yml中的三种方式可以任意匹配,不是一对一的对应关系
    @Value("${test.userList}")
    private String[] users;

    @Value("${test.userList2}")
    private List<String> users2;

    @Value("${test.userList3}")
    private Set<String> users3;
}

3.注入Map类型

yml中的配置

properties 复制代码
test: 
  # 第一种方式
  userInfo: "{username: 'skywalker', password: '123456'}"

  #第二种方式
  userInfo2:
    username: 'skywalker'
    password: '123456'

java中的注入方式

java 复制代码
@Component
public class Test {

    @Value("#{${test.userInfo}}")
    Map<String,String> userInfo;
}

三. 注入Map类型进阶

对于一个配置类文件,可以使用更优雅的注入方式,使用@ConfigurationProperties

properties 复制代码
test: 
  # 第一种方式
  userInfo: "{username: 'skywalker', password: '123456'}"

java中的配置方式

java 复制代码
@Component
@ConfigurationProperties(prefix = "test.userInfo")
public class UserProperties {
    private String username;

    private String password;

    public String getUsername(){
        return username;
    }

    public void SetUsername(String username){
        this.username = username;
    }

    public String getPassword(){
        return password;
    }

    public void SetPassword(String password){
        this.password = password;
    }
}

百看不如一练,上手练习一下吧!

相关推荐
invicinble3 分钟前
java集合类(二)--map
java·开发语言·python
Mr-Wanter10 分钟前
搭建局域网时间同步服务器
java·运维·服务器
代码笔耕10 分钟前
我们这样设计消息中心,解决了业务反复折腾的顽疾
java·后端·架构
没有bug.的程序员21 分钟前
负载均衡的真正含义:从算法到架构的深度解析
java·jvm·算法·微服务·架构·负载均衡
yc_xym21 分钟前
[项目实践]言聚论坛(后端)
java·项目开发
多仔ヾ22 分钟前
Solon + EasyQuery + ElementPlus 实现后台管理系统之 08-权限认证优化
java
LambdaCat23 分钟前
如何用 Prompt 让 AI 主动发现设计问题
java·ai·ai编程
changlianzhifu123 分钟前
分账系统:从“资金管道“到“增长引擎“,重塑商业价值分配新范式
java·服务器·前端
吃喝不愁霸王餐APP开发者25 分钟前
Java应用对接美团开放平台API时的HTTPS双向认证与证书管理实践
java·开发语言·https
海南java第二人25 分钟前
Spring事务传播行为完全指南:从原理到实战
spring