概述

@Value注解属于Spring框架,用来给变量注入值,使用方式如下:

  1. 将常量注入
  2. 将配置文件的值注入
  3. 将其它Bean的值注入

代码实现

将常量注入

格式

格式为:@Value("ledao")ledao是注入的常量

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package com.ledao.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
* @author LeDao
* @company
* @create 2022-05-05 18:47
*/
@RestController
public class TestController {

@Value("ledao")
private String name;

@RequestMapping("/test")
public String test() {
return name;
}
}

将配置文件的值注入

格式

格式为:@Value("${server.port}"),使用$符号,server.port是配置文件中定义的项目的访问端口号

如果格式为@Value("${server.port1:8888}"),当配置文件中server.port1不存在时注入8888,存在就注入server.port1的值

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package com.ledao.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
* @author LeDao
* @company
* @create 2022-05-05 18:47
*/
@RestController
public class TestController {

@Value("${server.port}")
private String port;

@RequestMapping("/test")
public String test() {
return port;
}
}

将其它Bean的值注入

格式

格式为:@Value("#{tom}"),使用#符号,tom是Bean的名称

代码

实体类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package com.ledao.entity;

import lombok.Data;

/**
* @author LeDao
* @company
* @create 2022-05-05 19:05
*/
@Data
public class Student {

private Integer id;

private String name;
}

创建一个名为tom的Bean

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package com.ledao.entity;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
* @author LeDao
* @company
* @create 2022-05-05 19:07
*/
@Configuration
public class MyConfig {

@Bean(name = "tom")
public Student tom(){
Student student = new Student();
student.setId(1);
student.setName("Tom");
return student;
}
}

测试代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package com.ledao.controller;

import com.ledao.entity.Student;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
* @author LeDao
* @company
* @create 2022-05-05 18:47
*/
@RestController
public class TestController {

@Value("#{tom}")
private Student student;

@RequestMapping("/test")
public String test() {
return student.toString();
}
}