@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 小时前
Spring Boot测试框架详解
java·spring boot·后端
豐儀麟阁贵1 小时前
基本数据类型
java·算法
_extraordinary_2 小时前
Java SpringMVC(二) --- 响应,综合性练习
java·开发语言
程序员 Harry2 小时前
深度解析:使用ZIP流式读取大型PPTX文件的最佳实践
java
wxweven3 小时前
校招面试官揭秘:我们到底在寻找什么样的技术人才?
java·面试·校招
陈陈爱java3 小时前
新知识点背诵
java
失散133 小时前
分布式专题——39 RocketMQ客户端编程模型
java·分布式·架构·rocketmq
泽02023 小时前
Linux之环境变量
java·linux·redis
hello 早上好4 小时前
深入 Spring 依赖注入底层原理
数据库·sql·spring
程序媛徐师姐4 小时前
Java基于SpringBoot的茶叶商城系统,附源码+文档说明
java·spring boot·java springboot·茶叶商城系统·java茶叶商城系统·茶叶·java茶叶商城