@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;
    }
}

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

相关推荐
武子康1 小时前
Java-72 深入浅出 RPC Dubbo 上手 生产者模块详解
java·spring boot·分布式·后端·rpc·dubbo·nio
_殊途2 小时前
《Java HashMap底层原理全解析(源码+性能+面试)》
java·数据结构·算法
椰椰椰耶3 小时前
【Spring】拦截器详解
java·后端·spring
没有bug.的程序员4 小时前
JAVA面试宝典 - 《MyBatis 进阶:插件开发与二级缓存》
java·面试·mybatis
没有羊的王K5 小时前
SSM框架学习——day1
java·学习
又菜又爱coding5 小时前
安装Keycloak并启动服务(macOS)
java·keycloak
不知道叫什么呀5 小时前
【C】vector和array的区别
java·c语言·开发语言·aigc
wan_da_ren6 小时前
JVM监控及诊断工具-GUI篇
java·开发语言·jvm·后端
cui_hao_nan6 小时前
JAVA并发——什么是Java的原子性、可见性和有序性
java·开发语言
best_virtuoso6 小时前
JAVA JVM垃圾收集
java·开发语言·jvm