概述
@Value注解属于Spring框架,用来给变量注入值,使用方式如下:
- 将常量注入
- 将配置文件的值注入
- 将其它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;
@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;
@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;
@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;
@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;
@RestController public class TestController {
@Value("#{tom}") private Student student;
@RequestMapping("/test") public String test() { return student.toString(); } }
|