@Value用于,在往spring容器中注入bean时,根据配置自动设置属性值。
因此,只有往spring容器中注入bean,并且从spring容器中取出bean,该注解才能生效。
相关源码如下:
1、配置属性application.properties
goods:
name: "鼠标"
price: "10.0"
num: "11"
2、实体类注解
package com.example.dyc.entity;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class Goods {
@Value("${goods.name}")
private String name;
@Value("${goods.price}")
private double price;
@Value("${goods.num}")
private int num;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
}
3、取出对象
package com.example.dyc.controller;
import com.example.dyc.entity.Book;
import com.example.dyc.entity.Goods;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@RestController
@RequestMapping(value="/goods")
public class GoodsController {
@Resource
Goods goods;
@GetMapping("/goodsInfo")
public String goodsInfo(){
return goods.getName() + " " + goods.getNum() + " " + goods.getNum();
}
}