SpringBoot学习笔记(3)——@Configuration与@Value

以前沃恩都是通过在资源路径下通过配置文件的方式来将属性值注入到某个javabean中。

例如:

* 通过Spring核心配置文件beans.xml用如下配置为具体的javabean的属性注入值
* <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
*      <property name="driverClassName" value="${jdbc.driverclass}"></property>
*      <property name="url" value="${jdbc.url}"></property>
*      <property name="username" value="root"></property>
*      <property name="password" value="123456"></property>
* </bean>

*现在直接使用 @Value (xxx) 注解 就可以直接为某个属性注入值了,等价于上面。这与前文使用@Configuration来讲配置文件中的属性值注入到容器中作用相同。本文将讨论使用@Value注解来达到相同的功能。

首先,@Value的用法如下:

@Value("字面量的值")


@Value("#{key}")


@Value("${key}")

(1)@Value("字面量的值")

可以直接通过@Value将字面量的值注入到某个bean中。

(2)@Value("#{key}")

表示可以从环境变量、配置文件中获取值。

(3)@Value("${key}")

表示可以支持SpEL表达式(Spring表达式)。

举例:

配置文件:application.yaml

server:
   port: 8080
person:
   lastName: 张三
   age: 18
   cityMap: {mapK1: mapV1,mapK2: mapV2}
   dog:
     name: 小花
     age: 8

javabean:person.java


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

/**
 * 实体类
 *
 * @Component 无论是@ConfigurationProperties还是@Value注入值,都必须先使本来成为-
 * Spring容器中的组件,这样Spring容器才能为它DI注入值
 */
@Component
public class Person {

    /**
     * ${key}:从环境变量以及配置文件中获取值
     */
    @Value("${person.lastName}")
    private String name;

    /**
     * #{SpEL}:Sping 表达式语言
     */
    @Value("#{2*4}")
    private int age;

    /**
     * 普通字面量的值
     */
    @Value("中国南京")
    private String address;

    public void setAge(int age) {
        this.age = age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public String getName() {
        return name;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getAddress() {
        return address;
    }
}

@Configurationproperties与@Value的区别

 @ConfigurationProperties@value
功能支持批量注入配置文件中的属性一个一个指定
松散绑定(松散语法)支持不支持
SpEL不支持支持
JSR303数据校验支持不支持
复杂类型封装支持不支持
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值