Spring系列(九):Spring属性赋值注解@Value 用法介绍

举报
IT技术分享社区 发表于 2022/11/22 21:36:50 2022/11/22
【摘要】 今天给大家分享Spring属性赋值注解@Value 用法,希望对大家能有所帮助! 1、@Value注解的作用@Value注解的作用主要可以给属性直接赋值、也可以读取配置文件中的值给属性赋值 2、@Value 注解的写法基本数据类型赋值:@Value(“三国演义”)使用${} ,可以读取保配置文件的值(前提是配置文件保存的环境变量当中)也可以使用spring表达式 #{} 做些简单的运算然后赋...

今天给大家分享Spring属性赋值注解@Value 用法,希望对大家能有所帮助!

image_ef8d0509.png

1、@Value注解的作用

@Value注解的作用主要可以给属性直接赋值、也可以读取配置文件中的值给属性赋值

2、@Value 注解的写法

  • 基本数据类型赋值:@Value(“三国演义”)
  • 使用${} ,可以读取保配置文件的值(前提是配置文件保存的环境变量当中)
  • 也可以使用spring表达式 #{} 做些简单的运算然后赋值,比如 @Value(100-1)

3、用法示例

3.1 resources 目录新增 book.properties 配置文件

book.bookName=水浒传
book.price=80.00
book.bookType=四大名著

3.2 新增实体 Book.java

package com.spring.bean;


import org.springframework.beans.factory.annotation.Value;


public class Book  {
    // 基本数据类型赋值
    @Value("三国演义")
    private String bookName;
    // 使用${} ,可以读取保配置文件的值(前提是配置文件保存的环境变量当中)
    @Value("${book.bookType}")
    private String bookType;
    // 也可以使用spring表达式 #{} 做些简单的运算然后赋值,比如 100-50 得到的值为50
    @Value("#{100-10.15}")
    private double price;


    public Book() {
    }


    public Book(String bookName, String bookType, double price) {
        this.bookName = bookName;
        this.bookType = bookType;
        this.price = price;
    }


    public String getBookName() {
        return bookName;
    }


    public void setBookName(String bookName) {
        this.bookName = bookName;
    }


    public String getBookType() {
        return bookType;
    }


    public void setBookType(String bookType) {
        this.bookType = bookType;
    }


    public double getPrice() {
        return price;
    }


    public void setPrice(double price) {
        this.price = price;
    }
    @Override
    public String toString() {
        return "Book{" +
                "bookName='" + bookName + '\'' +
                ", bookType='" + bookType + '\'' +
                ", price=" + price +
                '}';
    }


}

3.3 新增 TestValueConfig.java

package com.spring.config;


import com.spring.bean.Book;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
//使用 @PropertySource 注解可以加载外部的配置文件,将外部配置文件中的key/value值保存到运行的环境变量当中去
@PropertySource(value = {"classpath:/book.properties"})
@Configuration
public class TestValueConfig {
    @Bean
    public Book book() {
        return new Book();
    }
}

3.4 新增 TestValue.java 测试文件

package com.spring.test;


import com.spring.config.TestValueConfig;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.core.env.ConfigurableEnvironment;


public class TestValue {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext annotationContext = new AnnotationConfigApplicationContext(TestValueConfig.class);
        Object book = annotationContext.getBean("book");
        System.out.println(book);
        //通过环境变量直接读取配置文件里面的值
        ConfigurableEnvironment environment = annotationContext.getEnvironment();
        System.out.println(environment.getProperty("book.bookName"));


    }
}

输出结果:

Book{bookName=‘三国演义’, bookType=‘四大名著’, price=89.85}

水浒传

4、使用场景

  • 直接对属性进行赋值;比如字符串、数值、文件内容等。
  • 配置文件中读取简单类型进行赋值;配置文件需要保存到环境变量当中才有效。
  • 配置文件中读取复杂数据类型进行赋值;比如数组、Map、对象列表。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。