【Spring实战】29 @Value 注解

在实际的应用中,我们经常需要从外部配置文件或其他配置源中获取参数值。Spring 框架提供了 @Value 注解,它是一个强大的工具,让我们能够轻松地将配置值注入到 Spring Bean 中

1. 定义

@Value 注解是 Spring 框架中的一个注解,它用于从属性文件、环境变量或其他配置源中注入值到类的字段或方法参数中。

2. 好处

  • 外部配置:

    允许在应用程序的外部配置文件中设置参数值,而不是硬编码在代码中

  • 灵活性:

    可以根据环境或部署配置动态调整参数值,而不需要修改代码

  • 简化配置:

    简化了配置文件的读取和属性注入的操作

3. 示例

1)注入基本类型

DemoComponent.java

package com.cheney.demo;

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

@Component
public class DemoComponent {

    @Value("${demo.name}")
    private String name;

    public void print() {
        System.out.println("名字是: " + name);
    }
}

上述代码中,${demo.name} 表示从配置文件中读取 demo.name 的值,并将其注入到 name 字段中

DemoApplication.java

package com.cheney.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        ApplicationContext context = SpringApplication.run(DemoApplication.class, args);
        context.getBean(DemoComponent.class).print();
    }
}

application.properties

demo.name=cheney

执行结果

在这里插入图片描述

2)注入集合类型

DemoComponent.java

package com.cheney.demo;

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

import java.util.List;

@Component
public class DemoComponent {

    @Value("${demo.language}")
    private List<String> languageList;

    public void print() {
        System.out.println("语言是: " + languageList);
    }
}

在配置文件中,demo.language 可以设置为类似 Java,Python 的值,@Value 注解将其自动转换为List

DemoApplication.java

package com.cheney.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        ApplicationContext context = SpringApplication.run(DemoApplication.class, args);
        context.getBean(DemoComponent.class).print();
    }
}

application.properties

demo.language=Java,Python

执行结果

在这里插入图片描述

3)使用默认值

DemoComponent.java

package com.cheney.demo;

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

@Component
public class DemoComponent {

    @Value("${demo.name:hello}")
    private String name;

    public void print() {
        System.out.println("名字是: " + name);
    }
}

在这个例子中,如果配置文件中没有定义 demo.name,则会使用默认值 hello

DemoApplication.java

package com.cheney.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        ApplicationContext context = SpringApplication.run(DemoApplication.class, args);
        context.getBean(DemoComponent.class).print();
    }
}

application.properties

#demo.name=cheney

执行结果

在这里插入图片描述

4)注入整数和其他类型

DemoComponent.java

package com.cheney.demo;

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

@Component
public class DemoComponent {

    @Value("${demo.age}")
    private int age;

    public void print() {
        System.out.println("年龄是: " + age);
    }
}

@Value 注解也支持注入其他基本类型,如整数、布尔值等。

DemoApplication.java

package com.cheney.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        ApplicationContext context = SpringApplication.run(DemoApplication.class, args);
        context.getBean(DemoComponent.class).print();
    }
}

application.properties

demo.age=22

执行结果

在这里插入图片描述

总结

通过 @Value 注解,Spring 提供了一种简单而强大的方式,将外部配置值注入到应用程序中。这样的灵活性使得我们能够更好地适应不同的环境和需求,而不需要修改源代码,详细的注解使用说明请查阅官方文档。

  • 24
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值