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

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

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

image_27bb8fcb.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、对象列表。
相关文章
|
27天前
|
Java Spring
【Spring】方法注解@Bean,配置类扫描路径
@Bean方法注解,如何在同一个类下面定义多个Bean对象,配置扫描路径
170 73
|
22天前
|
Java Spring 容器
【SpringFramework】Spring IoC-基于注解的实现
本文主要记录基于Spring注解实现IoC容器和DI相关知识。
50 21
|
27天前
|
存储 Java Spring
【Spring】获取Bean对象需要哪些注解
@Conntroller,@Service,@Repository,@Component,@Configuration,关于Bean对象的五个常用注解
|
27天前
|
Java Spring
【Spring配置】idea编码格式导致注解汉字无法保存
问题一:对于同一个项目,我们在使用idea的过程中,使用汉字注解完后,再打开该项目,汉字变成乱码问题二:本来a项目中,汉字注解调试好了,没有乱码了,但是创建出来的新的项目,写的注解又成乱码了。
|
2月前
|
前端开发 Java 开发者
Spring MVC中的请求映射:@RequestMapping注解深度解析
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的关键,它将HTTP请求映射到相应的处理器方法上。本文将深入探讨`@RequestMapping`注解的工作原理、使用方法以及最佳实践,为开发者提供一份详尽的技术干货。
189 2
|
2月前
|
前端开发 Java Spring
探索Spring MVC:@Controller注解的全面解析
在Spring MVC框架中,`@Controller`注解是构建Web应用程序的基石之一。它不仅简化了控制器的定义,还提供了一种优雅的方式来处理HTTP请求。本文将全面解析`@Controller`注解,包括其定义、用法、以及在Spring MVC中的作用。
70 2
|
2月前
|
前端开发 Java 开发者
Spring MVC中的控制器:@Controller注解全解析
在Spring MVC框架中,`@Controller`注解是构建Web应用程序控制层的核心。它不仅简化了控制器的定义,还提供了灵活的请求映射和处理机制。本文将深入探讨`@Controller`注解的用法、特点以及在实际开发中的应用。
142 0
|
1天前
|
XML Java 应用服务中间件
Spring Boot 两种部署到服务器的方式
本文介绍了Spring Boot项目的两种部署方式:jar包和war包。Jar包方式使用内置Tomcat,只需配置JDK 1.8及以上环境,通过`nohup java -jar`命令后台运行,并开放服务器端口即可访问。War包则需将项目打包后放入外部Tomcat的webapps目录,修改启动类继承`SpringBootServletInitializer`并调整pom.xml中的打包类型为war,最后启动Tomcat访问应用。两者各有优劣,jar包更简单便捷,而war包适合传统部署场景。需要注意的是,war包部署时,内置Tomcat的端口配置不会生效。
51 17
Spring Boot 两种部署到服务器的方式
|
1天前
|
Dart 前端开发 JavaScript
springboot自动配置原理
Spring Boot 自动配置原理:通过 `@EnableAutoConfiguration` 开启自动配置,扫描 `META-INF/spring.factories` 下的配置类,省去手动编写配置文件。使用 `@ConditionalXXX` 注解判断配置类是否生效,导入对应的 starter 后自动配置生效。通过 `@EnableConfigurationProperties` 加载配置属性,默认值与配置文件中的值结合使用。总结来说,Spring Boot 通过这些机制简化了开发配置流程,提升了开发效率。
28 17
springboot自动配置原理
|
6天前
|
XML JavaScript Java
SpringBoot集成Shiro权限+Jwt认证
本文主要描述如何快速基于SpringBoot 2.5.X版本集成Shiro+JWT框架,让大家快速实现无状态登陆和接口权限认证主体框架,具体业务细节未实现,大家按照实际项目补充。
43 11