Spring中@Value注解详解

简介: Spring中@Value注解详解

在spring项目中必不可少的就是读取配置文件,那么读取配置文件就有两种方式。一种就是使用Spring中@Value注解,还有一种是使用SpringBoot中的@ConfigurationProperties注解,本篇文章主要是介绍常用的第一种方式


@Value 注解有两种方式,@Value(“${}”)和@Value(“#{}”)两种方式


第一种 @Value(“${}”)是用来获取配置文件

第二种@Value(“#{}”)是用来表示 SpEl 表达式通常用来获取 bean 的属性,或者调用 bean 的某个方法。


文章目录



$号用法----获取application.yml文件中port

先说配置文件中属性的注入


server:
 port: 8129

测试代码如下


@Value("${server.port}")
    private String port;
    @Test
    public  void  getPort(){
        System.out.println("############"+port+"############");
    }

测试结果如下



$号用法-----测试获取自定义的配置文件中的属性


先配置自定义配置文件

1,在application.yml文件中加上这一句


2,然后编写application-config.yml配置文件,加上测试属性中多个值的情况


测试代码如下

// 测试自定义的配置文件
    @Value("${user.password}")
    private String password;
    @Test
    public  void  getPassword(){
        System.out.println(password);
    }
    //测试配置多个值
    @Value("${users}")
    private String[] toolArray;
    @Value("${users}")
    private List<String> toolList;
    @Test
    public  void  getTools(){
        System.out.println(toolArray);
        // 反射得到其类型
        String typeName = toolList.getClass().getTypeName();
        System.out.println(typeName);
        System.out.println(toolList);
    }


测试结果如下:

测试自定义配置文件中的属性结果:



测试数组类型结果:


不加#号或者$号的注入,用途暂未知

代码如下:


@Value("hello")
    private String value;
    @Test
    public void getValue(){
        System.out.println(value);
    }


测试结果如下


#号的用法,注入其他Bean中的属性


先创建一个Bean并且注入到spring容器中


@Component("myBeans")
public class other {
    @Value("hello")
    private String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

测试方法如下:

// 注入其他Bean的属性
    @Value("#{myBeans.name}")
    private String fromAnotherBean;
    @Test
    public  void  getFromAnotherBean(){
        System.out.println(fromAnotherBean);
    }

结果如下:

相关文章
|
19天前
|
Java Spring
在使用Spring的`@Value`注解注入属性值时,有一些特殊字符需要注意
【10月更文挑战第9天】在使用Spring的`@Value`注解注入属性值时,需注意一些特殊字符的正确处理方法,包括空格、引号、反斜杠、新行、制表符、逗号、大括号、$、百分号及其他特殊字符。通过适当包裹或转义,确保这些字符能被正确解析和注入。
|
8天前
|
XML JSON Java
SpringBoot必须掌握的常用注解!
SpringBoot必须掌握的常用注解!
29 4
SpringBoot必须掌握的常用注解!
|
10天前
|
存储 缓存 Java
Spring缓存注解【@Cacheable、@CachePut、@CacheEvict、@Caching、@CacheConfig】使用及注意事项
Spring缓存注解【@Cacheable、@CachePut、@CacheEvict、@Caching、@CacheConfig】使用及注意事项
45 2
|
10天前
|
JSON Java 数据库
SpringBoot项目使用AOP及自定义注解保存操作日志
SpringBoot项目使用AOP及自定义注解保存操作日志
27 1
|
1天前
|
XML Java 数据格式
SpringBoot入门(8) - 开发中还有哪些常用注解
SpringBoot入门(8) - 开发中还有哪些常用注解
7 0
|
4天前
|
存储 安全 Java
springboot当中ConfigurationProperties注解作用跟数据库存入有啥区别
`@ConfigurationProperties`注解和数据库存储配置信息各有优劣,适用于不同的应用场景。`@ConfigurationProperties`提供了类型安全和模块化的配置管理方式,适合静态和简单配置。而数据库存储配置信息提供了动态更新和集中管理的能力,适合需要频繁变化和集中管理的配置需求。在实际项目中,可以根据具体需求选择合适的配置管理方式,或者结合使用这两种方式,实现灵活高效的配置管理。
8 0
|
17天前
|
存储 Java 数据管理
强大!用 @Audited 注解增强 Spring Boot 应用,打造健壮的数据审计功能
本文深入介绍了如何在Spring Boot应用中使用`@Audited`注解和`spring-data-envers`实现数据审计功能,涵盖从添加依赖、配置实体类到查询审计数据的具体步骤,助力开发人员构建更加透明、合规的应用系统。
|
2月前
|
SQL 监控 druid
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
这篇文章介绍了如何在Spring Boot项目中配置和监控Druid数据源,包括自定义配置和使用Spring Boot Starter两种方法。
|
29天前
|
人工智能 自然语言处理 前端开发
SpringBoot + 通义千问 + 自定义React组件:支持EventStream数据解析的技术实践
【10月更文挑战第7天】在现代Web开发中,集成多种技术栈以实现复杂的功能需求已成为常态。本文将详细介绍如何使用SpringBoot作为后端框架,结合阿里巴巴的通义千问(一个强大的自然语言处理服务),并通过自定义React组件来支持服务器发送事件(SSE, Server-Sent Events)的EventStream数据解析。这一组合不仅能够实现高效的实时通信,还能利用AI技术提升用户体验。
149 2
|
2天前
|
缓存 IDE Java
SpringBoot入门(7)- 配置热部署devtools工具
SpringBoot入门(7)- 配置热部署devtools工具
11 2
 SpringBoot入门(7)- 配置热部署devtools工具
下一篇
无影云桌面